通常,当您想要数据绑定控件“更新”时,使用“PropertyChanged”事件向界面发出信号,表明数据在幕后已更改。
例如,您可以有一个文本块,它绑定到具有属性“DisplayText”的数据上下文中。
<TextBlock Text="{Binding Path=DisplayText}"/>
从这里开始,如果DataContext使用PropertyName“DisplayText”引发PropertyChanged事件,则此文本块的文本应该更新(假设您没有更改绑定的模式)。
然而,我有一个更复杂的绑定,它使用许多数据上下文的属性来确定控件的最终外观和感觉。为了实现这一点,我直接绑定到数据上下文并使用转换器。在这种情况下,我正在使用图像源。
<Image Source="{Binding Converter={StaticResource ImageConverter}}"/>
正如您所看到的,我使用{Binding}而不是路径直接绑定到数据上下文,并使用ImageConverter选择我要查找的图像。但现在我没有办法(我知道的)告诉该绑定更新。我尝试使用“.”作为属性名称引发propertychanged事件,但未能成功。
这可行吗?我必须将转换逻辑包装到绑定可以附加到的属性中,还是有一种方法可以告诉绑定刷新(而无需显式刷新绑定)?
任何帮助都将不胜感激。谢谢! -Adam
例如,您可以有一个文本块,它绑定到具有属性“DisplayText”的数据上下文中。
<TextBlock Text="{Binding Path=DisplayText}"/>
从这里开始,如果DataContext使用PropertyName“DisplayText”引发PropertyChanged事件,则此文本块的文本应该更新(假设您没有更改绑定的模式)。
然而,我有一个更复杂的绑定,它使用许多数据上下文的属性来确定控件的最终外观和感觉。为了实现这一点,我直接绑定到数据上下文并使用转换器。在这种情况下,我正在使用图像源。
<Image Source="{Binding Converter={StaticResource ImageConverter}}"/>
正如您所看到的,我使用{Binding}而不是路径直接绑定到数据上下文,并使用ImageConverter选择我要查找的图像。但现在我没有办法(我知道的)告诉该绑定更新。我尝试使用“.”作为属性名称引发propertychanged事件,但未能成功。
这可行吗?我必须将转换逻辑包装到绑定可以附加到的属性中,还是有一种方法可以告诉绑定刷新(而无需显式刷新绑定)?
任何帮助都将不胜感激。谢谢! -Adam