Привязка данных перечисления к ComboBox в WPF + MVVM - PullRequest
6 голосов
/ 09 апреля 2010

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

Допустим, у меня есть моя ViewModel, и для него (или даже для модели) может быть определено перечисление:

public enum MyTypes { Type1, Type2, Type3 };

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

    <Window.Resources>
        <ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type sys:Enum}" x:Key="TipHandlingValues">
            <ObjectDataProvider.MethodParameters>
                <!-- what goes here?  it's totally wrong. -->
                <my:MyTypes />
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </Window.Resources>

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

Ответы [ 2 ]

4 голосов
/ 09 апреля 2010

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

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

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

...