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