我读了这个非常相关的问题在这里 https://stackoverflow.com/questions/58743/databinding-an-enum-property-to-a-combobox-in-wpf,由于答案中的链接,这非常有帮助。我现在遇到的问题是要采取额外的步骤并使其全部适用于 MVVM 模式。
假设我有我的 ViewModel,它(甚至模型)可以定义一个枚举:
public enum MyTypes { Type1, Type2, Type3 };
我想将其数据绑定到 GUI 中的组合框。根据这篇文章,我将使用 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>
我放在那里的几乎所有内容都无法编译。有谁知道如何克服这个小障碍吗?
最简单的方法是在代码中添加这一行:
DataContext = Enum.GetValues(typeof(MyTypes));
其他选项是添加标记扩展,从枚举中生成值列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)