WPF数据绑定到具有枚举键的字典

本文关键字:字典 枚举 数据绑定 WPF | 更新日期: 2023-09-27 18:27:58

我有一个包含几个项目的解决方案。在一个项目中,是我的模型,它有一个名为ModelEnum的枚举。

然后在我的WPF项目中,我有一个ViewModel,它有一个Dictionary。

在我的ViewModel中,我的ValuesDictionary设置为:

    private Dictionary<ModelEnum, string> _valuesDictionary = new Dictionary<ModelEnum, string>();
    public Dictionary<ModelEnum, string> ValuesDictionary
    {
        get { return _valuesDictionary; }
        set { _valuesDictionary = value; OnPropertyChanged(_valuesDictionary); }
    }

在我的XAML中,我有:

xmlns:model="clr-namespace:Model.Data;assembly=Model"
...
<TextBox Text="{Binding Path=ValuesDictionary[(model:ModelEnum)ModelEnum.Enum1].Value}" HorizontalAlignment="Left" Height="29" Margin="90,82,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="50"/>

以下XAML片段:

(model:ModelEnum)ModelEnum.Enum1

给了我错误"参数类型不匹配"。我很困惑,因为我以为我将其转换为它所期望的枚举类型。我引用了这个SO问题,但没有运气。

WPF数据绑定到具有枚举键的字典

替换

(model:ModelEnum)ModelEnum.Enum1].Value

带有

(model:ModelEnum)Enum1]

那就试试吧。我希望它能起作用。

为了增加潜在的陷阱,我在没有显式"Path="的情况下绑定了一些问题

{Binding ValuesDictionary[(model:ModelEnum)Enum1]}

不起作用,但是:

{Binding Path=ValuesDictionary[(model:ModelEnum)Enum1]}

尽管设计者(或者ReSharper)仍然抱怨语法错误,但它仍能正常工作。