WPF: Como ligar os valores de uma enum a uma ComboBox

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.

Nuno Freitas
Publicado por Nuno Freitas em 04 abril, 2014

Artigos relacionados