没有找出为什么这不起作用:
我在ComboBox
中有一个UserControl
,其中ItemSource
使用Enum
绑定到ObjectDataProvider
:
xmlns:ViewModels="clr-namespace:CMiX.ViewModels"
xmlns:System="clr-namespace:System;assembly=mscorlib"
<UserControl.Resources>
<ResourceDictionary>
<ObjectDataProvider x:Key="Blend" MethodName="GetValues" ObjectType="{x:Type System:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="ViewModels:BlendMode"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</ResourceDictionary>
</UserControl.Resources>
<ComboBox
SelectedItem="{Binding BlendMode}"
ItemsSource="{Binding Source={StaticResource Blend}}">
</ComboBox>
Enum非常简单:
namespace CMiX.ViewModels
{
public enum BlendMode
{
Normal,
Add,
Subtract
};
}
最后,SelectedItem
绑定到带有ViewModel
属性的BlendMode
:
private BlendMode _blendMode;
public BlendMode BlendMode
{
get => _blendMode;
set => SetAndNotify(ref _blendMode, value);
}
现在,如果我想运行应用程序,我得到了这个:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
Set property 'System.Windows.ResourceDictionary.Source' threw an exception.'
不幸的是我真的不知道为什么。
答案 0 :(得分:0)
MethodName
应该是GetNames
而不是GetValues
然后才有效。