将枚举数据绑定到WPF + MVVM中的ComboBox

Dav*_*ave 6 data-binding wpf enums combobox mvvm

我在这里已经阅读了这个非常相关的问题,由于答案中的链接,它非常有用.我现在只是遇到一个问题需要额外的步骤,并使其与MVVM模式一起工作.

假设我有自己的ViewModel,它(甚至模型)可以定义一个枚举:

public enum MyTypes { Type1, Type2, Type3 };
Run Code Online (Sandbox Code Playgroud)

我想在我的GUI中将其数据绑定到ComboBox.根据这篇文章,我将使用ObjectDataProvider来调用MyTypes上的Enum.GetValues()方法.所以我必须将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>
Run Code Online (Sandbox Code Playgroud)

几乎没有我放在那里甚至会编译.有谁知道如何克服这个小障碍?

And*_*rey 4

最简单的方法是在代码中添加这一行:

DataContext = Enum.GetValues(typeof(MyTypes));
Run Code Online (Sandbox Code Playgroud)

其他选项是添加标记扩展,从枚举中生成值列表。