在我的XAML代码中,我绑定了当前的dataitem,如下所示:
Background="{Binding Path=., Converter={StaticResource ResourceKey=kBackground}}"
我的转换器使用dataitem的几个属性来确定背景。当任何这些属性发生变化时,背景颜色可能会发生变化。我想向目标发送通知,以便后台适当更改。我的问题是,当绑定路径是“。”时,我不知道如何发送这样的通知。
如果我的转换器使用PropertyA和PropertyB,请调用:
PropertyChanged(this, new PropertyChangedEventArgs("PropertyA"))
和/或
PropertyChanged(this, new PropertyChangedEventArgs("PropertyB"))
不会触发绑定。我试着说这个:
PropertyChanged(this, new PropertyChangedEventArgs("."))
但它也没有触发绑定。
如何以“Path =”的方式调用PropertyChanged。绑定会收到他们需要更新的通知吗?
这可能是一个重复的问题,但我找不到一个。我不太清楚术语。
答案 0 :(得分:1)
尝试使用IMultiValueConverter,并将其所需的属性传递给
<Grid.Background>
<MultiBinding Converter="{StaticResource MyMultiValueConverter}">
<Binding Path="PropertyA"/>
<Binding Path="PropertyB"/>
</MultiBinding>
</Grid.Background>
每次为PropertyA
或PropertyB
使用您当前的绑定语法的替代方法是在PropertyChange
或PropertyA
更改时随时提出父数据项的PropertyB
通知。
例如,假设您当前的数据项为SomeObject
:
SomeObject.PropertyChanged += SomeObject_PropertyChanged;
...
void SomeObject_PropertyChanged(object src, PropertyChangedEventArgs e)
{
if (e.PropertyName == "PropertyA" || e.PropertyName == "PropertyB")
{
RaisePropertyChanged("SomeObject");
}
}