![](/img/trans.png)
[英]In WPF, how can I have binding on LostFocus but validation on PropertyChanged?
[英]How do I Call PropertyChanged if I have a Binding to the Current DataItem (Path=.)
在我的XAML代码中,我具有对当前数据项的绑定,如下所示:
Background="{Binding Path=., Converter={StaticResource ResourceKey=kBackground}}"
我的转换器使用数据项的几个属性来确定背景。 当这些属性中的任何一个更改时,背景颜色可能会更改。 我想向目标发送通知,以便适当更改背景。 我的问题是,当绑定路径为“。”时,我不知道如何发送此类通知。
如果我的转换器使用PropertyA和PropertyB,则调用:
PropertyChanged(this, new PropertyChangedEventArgs("PropertyA"))
和/或
PropertyChanged(this, new PropertyChangedEventArgs("PropertyB"))
不会触发绑定。 我试过这样称呼:
PropertyChanged(this, new PropertyChangedEventArgs("."))
但它也没有触发绑定。
如何以“ Path =”这样的方式调用PropertyChanged。 绑定获得需要更新的通知?
这可能是一个重复的问题,但我找不到。 我不太了解该术语。
尝试改用IMultiValueConverter ,并向其传递所需的属性
<Grid.Background>
<MultiBinding Converter="{StaticResource MyMultiValueConverter}">
<Binding Path="PropertyA"/>
<Binding Path="PropertyB"/>
</MultiBinding>
</Grid.Background>
每当针对PropertyA
或PropertyB
发出PropertyChange通知时,都应重新评估此值
使用当前绑定语法的替代方法是,每当PropertyA
或PropertyB
发生更改时,就引发父数据项的PropertyChange
通知。
例如,假设您当前的数据项是SomeObject
:
SomeObject.PropertyChanged += SomeObject_PropertyChanged;
...
void SomeObject_PropertyChanged(object src, PropertyChangedEventArgs e)
{
if (e.PropertyName == "PropertyA" || e.PropertyName == "PropertyB")
{
RaisePropertyChanged("SomeObject");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.