Fazendo uma simples extensão markup, ligam facilmente os valores de uma enumeração directamente a uma ComboBox.
public class EnumValuesExtension : MarkupExtension
{
private readonly Type _type;
public EnumValuesExtension(Type type)
{
_type = type;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return Enum.GetValues(_type);
}
}
Depois apenas têm de chamar a extensão da seguinte forma, passando a enumeração ao constructor da extensão:
<ComboBox ItemsSource="{my:EnumValues my:Status}" />
Nota: ao usar extensões em XAML podem omitar a parte “Extension” do final do nome.