手动将数据重新绑定到WPF ContentControl

手动将数据重新绑定到WPF ContentControl,wpf,Wpf,我正在尝试手动将数据重新绑定到ContentControl 在代码背后 MyModel MyModel=this.FindResource(“MyModel”)作为MyModel; myModel.Property1=“测试”; var bindingExpression=myView.GetBindingExpression(ContentControl.ContentProperty); bindingExpression.UpdateTarget(); 但它似乎不起作用,我遗漏了什么

我正在尝试手动将数据重新绑定到ContentControl


在代码背后

MyModel MyModel=this.FindResource(“MyModel”)作为MyModel;
myModel.Property1=“测试”;
var bindingExpression=myView.GetBindingExpression(ContentControl.ContentProperty);
bindingExpression.UpdateTarget();

但它似乎不起作用,我遗漏了什么?

如果
Property1
在发生更改时没有引发更改事件,则文本框不知道数据已更改并需要更新

使您的
MyModel
类实现
INotifyPropertyChanged
,并在
Property1
更改时引发
PropertyChanged
事件,它将正常工作


另外,您不需要显式地告诉WPF
ContentControl.Content
已更改,因为它没有更改。它仍然指向相同的
MyModel
对象。

如果
Property1
在发生更改时未引发更改事件,则文本框不知道数据已更改并需要更新

使您的
MyModel
类实现
INotifyPropertyChanged
,并在
Property1
更改时引发
PropertyChanged
事件,它将正常工作


另外,您不需要显式地告诉WPF
ContentControl.Content
已更改,因为它没有更改。它仍然指向相同的
MyModel
对象。

模型是否实现了INotifyPropertyChanged?调试输出是否有任何绑定错误?除了您的ContentControl被命名为
myview
和您的代码隐藏使用
cntView
,我猜它与绑定到StaticResource有关。静态通常意味着它不会更改,因此WPF将其绑定一次并将其忘记。@Erno:不,该模型未实现INotifyPropertyChanged,但这就是我尝试手动重新绑定数据的原因。我也没有看到任何错误。@Rachel:很抱歉,我忘记更改我粘贴在这里的代码示例中的视图名称,它在代码隐藏中也应该是myView(我现在就编辑)。关于staticsource,如果我将相同的属性绑定到一个文本框,并使用相同的代码重新绑定,那么模型是否实现了INotifyPropertyChanged?调试输出是否有任何绑定错误?除了您的ContentControl被命名为
myview
和您的代码隐藏使用
cntView
,我猜它与绑定到StaticResource有关。静态通常意味着它不会更改,因此WPF将其绑定一次并将其忘记。@Erno:不,该模型未实现INotifyPropertyChanged,但这就是我尝试手动重新绑定数据的原因。我也没有看到任何错误。@Rachel:很抱歉,我忘记更改我粘贴在这里的代码示例中的视图名称,它在代码隐藏中也应该是myView(我现在就编辑)。关于staticsource,如果我将相同的属性绑定到一个文本框,并使用相同的代码重新绑定,那么它就可以工作。实际上,我无法更改模型,这就是为什么我要尝试使显式绑定工作的原因。但你是对的,问题在于参考文献。由于StaticResource的引用没有更改,因此不会触发更新。我所做的是用MyViewModel包装MyModel,并在代码隐藏中重新创建MyModel对象。实际上,我无法更改模型,这就是为什么我要尝试使显式绑定工作。但你是对的,问题在于参考文献。由于StaticResource的引用没有更改,因此不会触发更新。我所做的是用MyViewModel包装MyModel,并在代码隐藏中重新创建MyModel对象。