WPF绑定在绑定字典中

时间:2014-03-31 19:21:57

标签: c# wpf

我正在尝试访问复杂对象的字符串属性,该属性是我的Dictionary的值。关键是我班上的财产。

<DataGridTextColumn Binding="{Binding Path=MyDictionary[{Binding MyClassProp}].MyObjValue}"/>

绑定中的绑定不起作用,因为它不是有效的XAML。还有另一种方法吗?

1 个答案:

答案 0 :(得分:1)

是的,双Binding将不起作用。我还没有能够测试这个,但也许你可以这样做:

让您的班级实施INotifyPropertyChanged

public event PropertyChangedEventHandler PropertyChanged;

protected void Notify(string propName)
{
    if (this.PropertyChanged != null)
        PropertyChanged(this, new PropertyChangedEventArgs(propName));
}

当您的MyClassProp媒体资源发生变化时:

private string _MyClassProp;
public string MyClassProp
{
    get { return _MyClassProp; }
    set
    {
        _MyClassProp = value;

        MyDictValue = MyDictionary[MyClassProp].MyObjValue;
        Notify("MyClassProp");
    }
}

请注意,当MyClassProp发生更改时,您可以使用字典的值设置另一个属性。然后定义该属性以用作绑定:

private string _MyDictValue;
public string MyDictValue
{
    get { return _MyDictValue; }
    set
    {
        _MyDictValue = value;
        Notify("MyDictValue");
    }
}

然后将您的xaml绑定更改为:

<DataGridTextColumn Binding="{Binding MyDictValue}"/>