将ComboBox绑定到枚举抛出异常

时间:2018-06-16 08:56:01

标签: c# wpf

没有找出为什么这不起作用:

我在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.'

不幸的是我真的不知道为什么。

1 个答案:

答案 0 :(得分:0)

MethodName应该是GetNames而不是GetValues然后才有效。