Привязка данных перечисления к ComboBox в WPF + MVVM

Я считал этот очень связанный вопрос здесь на Так, и это было чрезвычайно полезно из-за ссылки в ответе. У меня просто есть проблема, теперь делающая дополнительный шаг и заставляющая все это работать с шаблоном MVVM.

Скажем, у меня есть свой ViewModel, и ему (или даже Модель) можно было определить перечисление:

public enum MyTypes { Type1, Type2, Type3 };

Я хочу связать с данными это к ComboBox в моем GUI. В соответствии со статьей, я использовал бы ObjectDataProvider для вызова Enum. GetValues () метод на MyTypes. Таким образом, я должен передать MyTypes как MethodParameter. Но как Вы передаете тип? Я попробовал различные методы, как добавление ссылки на пространство имен в XAML:

    
        
            
                
                
            
        
    

В значительной степени ничто, что я поместил, там даже не скомпилирует. Кто-либо знает, как закончить это небольшое препятствие?

6
задан Community 23 May 2017 в 10:26
поделиться

2 ответа

Самый простой способ - добавить эту строку в код:

DataContext = Enum.GetValues(typeof(MyTypes));

Другие варианты - добавить расширение разметки, которое создает список значений из перечисления.

4
ответ дан 16 December 2019 в 21:37
поделиться

См. Мой ответ в этом сообщении SO: Как объявить шаблон элемента combobox, который имеет Itemsource как значения перечисления в WPF?

Короче говоря, в ObjectDataProvider.MethodParameters должен ссылаться на имя вашего типа Enum, указанное в пространстве имен, то есть

<ObjectDataProvider.MethodParameters>
  <x:Type TypeName="my:MyTypes"/>
</ObjectDataProvider.MethodParameters>
4
ответ дан 16 December 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: