Я знаю, что есть несколько способов сделать это, но я хотел бы сделать это еще проще, если это возможно, потому что у меня есть много комбинированных списков, которые можно связать таким образом. Есть предложение с использованием ObjectDataProvider здесь . Проблема в том, что я должен создать запись ресурса для каждого перечисления, и это много. До сих пор я использовал метод code-behind, потому что он намного короче:
cmb.ItemsSource = Enum.GetValues(typeof(MyTypes));
Мне интересно, можно ли создать эквивалент в Xaml. Я думал, что мы можем заархивировать это с помощью конвертера. Мы могли бы преобразовать тип в массив, а затем связать массив со списком элементов ItemsSource. Но я застрял на том, как указать мой enum для конвертера. Вот мой код:
Мое перечисление:
public enum MyTypes { Type1, Type2, Type3 };
Это мой конвертер:
public class EnumToArrayConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return Enum.GetValues(value.GetType());
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null; // I don't care about this
}
}
Мой ресурс Xaml:
<lib:EnumToArrayConverter x:Key="E2A"/>
Вот как это использовать:
<ComboBox SelectedItem="{Binding MyType}" ItemsSource="{Binding MyTypes, Converter={StaticResource E2A}}"/>
Итак, мой вопрос заключается в том, как указать мой enum "MyTypes" для конвертера. Я также попытался добавить пространство имен, но это не помогает.