Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
直接绑定到DataContext w/Converter时的WPF更新绑定_Wpf_Data Binding_Datacontext_Propertychanged - Fatal编程技术网

直接绑定到DataContext w/Converter时的WPF更新绑定

直接绑定到DataContext w/Converter时的WPF更新绑定,wpf,data-binding,datacontext,propertychanged,Wpf,Data Binding,Datacontext,Propertychanged,通常,当您希望数据绑定控件“更新”时,可以使用“PropertyChanged”事件向接口发出信号,表明数据在幕后已更改 例如,您可以使用属性“DisplayText”将textblock绑定到datacontext 从这里开始,如果DataContext引发带有PropertyName“DisplayText”的PropertyChanged事件,那么这个textblock的文本应该更新(假设您没有更改绑定模式) 但是,我有一个更复杂的绑定,它使用datacontext之外的许多属性来确定控

通常,当您希望数据绑定控件“更新”时,可以使用“PropertyChanged”事件向接口发出信号,表明数据在幕后已更改

例如,您可以使用属性“DisplayText”将textblock绑定到datacontext

从这里开始,如果DataContext引发带有PropertyName“DisplayText”的PropertyChanged事件,那么这个textblock的文本应该更新(假设您没有更改绑定模式)

但是,我有一个更复杂的绑定,它使用datacontext之外的许多属性来确定控件的最终外观。为了实现这一点,我直接绑定到datacontext并使用转换器。在本例中,我使用的是图像源

如您所见,我使用了一个没有路径的{Binding}来直接绑定到datacontext,并使用ImageConverter来选择我要查找的图像。但现在我没有办法(据我所知)告诉绑定更新。我尝试以“.”作为propertyname引发propertychanged事件,但没有成功

这可能吗?我是否必须将转换逻辑包装成绑定可以附加到的属性,或者是否有方法告诉绑定刷新(而不显式刷新绑定)

任何帮助都将不胜感激。 谢谢
-Adam

嗯,您没有显示完整的实现。但是我认为如果绑定到GUI的值提供PropertyChanged事件,那么它应该更新


关于

我不相信有一种方法可以完全实现电流转换器所需的功能。如前所述,您可以在ViewModel中进行计算,也可以将转换器更改为
IMulitValueConverter


根据您的特定场景(绑定到ViewModel类的转换器及其一些属性),我倾向于在ViewModel中实现逻辑。

这里的解决方法是向我的对象(用作datacontext)添加一个名为“Self”的属性,它只返回

public Object Self{get{返回此;}}

然后在绑定中我使用了这个属性:

那么当我打电话的时候

PropertyChanged(这是新的propertychangedventargs(“Self”))

它就像一个符咒


谢谢大家。

问题在于图像源直接绑定到datacontext,而不是datacontext的属性。转换器接收datacontext并返回图像源。为了澄清这一点,如果我使用一个绑定,该绑定具有指向datacontext属性的路径,然后为该属性调用PropertyChanged,那么更新就会发生(起作用)。但是,我需要对象本身来确定图像(不仅仅是属性)。谢谢。我打出来的时候想了想。我将尝试在我的对象上放置一个名为“Self”的属性,它只返回自身,然后调用PropertyChanged(“Self”)。我来试试,谢谢!我疯狂地寻找着这个,当它出现在我的电脑屏幕上时,我正要问它suggestions@Adam,多么优雅的黑客!荣誉