假设我有一个班级:
class Foo
{
public string Bar
{
get { ... }
}
public string this[int index]
{
get { ... }
}
}
我可以使用“{Binding Path = Bar}”和“{Binding Path = [x]}”绑定到这两个属性。细
现在假设我要实现INotifyPropertyChanged:
class Foo : INotifyPropertyChanged
{
public string Bar
{
get { ... }
set
{
...
if( PropertyChanged != null )
{
PropertyChanged( this, new PropertyChangedEventArgs( "Bar" ) );
}
}
}
public string this[int index]
{
get { ... }
set
{
...
if( PropertyChanged != null )
{
PropertyChanged( this, new PropertyChangedEventArgs( "????" ) );
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
标记为?????的部分是什么? (我已经尝试过string.Format(“[{0}]”,索引)并且它不起作用)。这是WPF中的错误,是否有替代语法,或者仅仅是INotifyPropertyChanged没有普通绑定那么强大?
答案 0 :(得分:13)
感谢Cameron的建议,我找到了正确的语法,即:
Item[]
更新绑定到该索引属性的所有内容(所有索引值)。
答案 1 :(得分:6)
避免代码中的字符串,您可以使用常量Binding.IndexerName
,实际上是"Item[]"
new PropertyChangedEventArgs(Binding.IndexerName)
答案 2 :(得分:5)
PropertyChanged( this, new PropertyChangedEventArgs( "Item[]" ) )
所有索引和
PropertyChanged( this, new PropertyChangedEventArgs( "Item[" + index + "]" ) )
单个项目
问候,jerod
答案 3 :(得分:3)
不确定这是否有效,但反射器显示索引属性的get和set方法称为get_Item和set_Item。也许你可以试试Item,看看是否有效。