0

在我的 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 绑定收到需要更新的通知?

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

4

1 回答 1

2

尝试改用IMultiValueConverter,并传递它需要的属性

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

每当针对PropertyAPropertyB

使用当前绑定语法的替代方法是随时或更改PropertyChange父数据项的通知。PropertyAPropertyB

例如,假设您当前的数据项是SomeObject

SomeObject.PropertyChanged += SomeObject_PropertyChanged;

...

void SomeObject_PropertyChanged(object src, PropertyChangedEventArgs e)
{
    if (e.PropertyName == "PropertyA" || e.PropertyName == "PropertyB")
    {
        RaisePropertyChanged("SomeObject");
    }
}
于 2013-01-14T15:46:32.503 回答