Eine dritte Lösung:
Dies ist etwas mehr Arbeit im Voraus, besser ist auf lange Sicht einfacher, wenn Sie an viele Enums binden. Verwenden Sie einen Konverter, der den Typ der Enumeration als Parameter verwendet und ihn in ein Array von Strings als Ausgabe konvertiert.
In VB.NET:
Public Class EnumToNamesConverter
Implements IValueConverter
Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
Return [Enum].GetNames(DirectCast(value, Type))
End Function
Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
Throw New NotImplementedException()
End Function
End Class
Oder in C#:
public sealed class EnumToNamesConverter : IValueConverter
{
object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return Enum.GetNames(value.GetType());
}
object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw New NotSupportedException()
}
}
Dann in Ihrem Application.xaml
, fügen Sie eine globale Ressource diesen Konverter zuzugreifen:
<local:EnumToNamesConverter x:Key="EnumToNamesConverter" />
Schließlich verwenden der Konverter in allen XAML-Seiten, wo Sie die Werte von allen Enum ...
<ComboBox ItemsSource="{Binding
Source={x:Type local:CompassHeading},
Converter={StaticResource EnumToNamesConverter}}" />
Ich lese gerade Eric Burkes letzten Post über eine Swing JComboBox-Klasse, die das tut, und dachte "Hey, ich schwöre, ich sah eine SO Frage zu diesem ..." Ich war nahe, aber Sie wollen WPF, nicht Java/Swing . Wie auch immer, hier ist es für die Nachwelt: http://stuffthathappens.com/blog/2009/02/10/a-swing-jcombobox-for-enums/ – JMD