我正在尝试访问复杂对象的字符串属性,该属性是我的Dictionary的值。关键是我班上的财产。
<DataGridTextColumn Binding="{Binding Path=MyDictionary[{Binding MyClassProp}].MyObjValue}"/>
绑定中的绑定不起作用,因为它不是有效的XAML。还有另一种方法吗?
答案 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}"/>