繁体   English   中英

如果绑定到当前DataItem(Path =。),如何调用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。 绑定获得需要更新的通知?

这可能是一个重复的问题,但我找不到。 我不太了解该术语。

尝试改用IMul​​tiValueConverter ,并向其传递所需的属性

<Grid.Background>
    <MultiBinding Converter="{StaticResource MyMultiValueConverter}">
        <Binding Path="PropertyA"/>
        <Binding Path="PropertyB"/>
    </MultiBinding>
</Grid.Background>

每当针对PropertyAPropertyB发出PropertyChange通知时,都应重新评估此值

使用当前绑定语法的替代方法是,每当PropertyAPropertyB发生更改时,就引发父数据项的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM