Я считал этот очень связанный вопрос здесь на Так, и это было чрезвычайно полезно из-за ссылки в ответе. У меня просто есть проблема, теперь делающая дополнительный шаг и заставляющая все это работать с шаблоном MVVM.
Скажем, у меня есть свой ViewModel, и ему (или даже Модель) можно было определить перечисление:
public enum MyTypes { Type1, Type2, Type3 };
Я хочу связать с данными это к ComboBox в моем GUI. В соответствии со статьей, я использовал бы ObjectDataProvider для вызова Enum. GetValues () метод на MyTypes. Таким образом, я должен передать MyTypes как MethodParameter. Но как Вы передаете тип? Я попробовал различные методы, как добавление ссылки на пространство имен в XAML:
В значительной степени ничто, что я поместил, там даже не скомпилирует. Кто-либо знает, как закончить это небольшое препятствие?
Самый простой способ - добавить эту строку в код:
DataContext = Enum.GetValues(typeof(MyTypes));
Другие варианты - добавить расширение разметки, которое создает список значений из перечисления.
См. Мой ответ в этом сообщении SO: Как объявить шаблон элемента combobox, который имеет Itemsource как значения перечисления в WPF?
Короче говоря, в ObjectDataProvider.MethodParameters должен ссылаться на имя вашего типа Enum, указанное в пространстве имен, то есть
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="my:MyTypes"/>
</ObjectDataProvider.MethodParameters>