ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

WPF MVVM模式下绑定两个ViewModel导致View不触发更新

WPF MVVM模式下绑定两个ViewModel导致View不触发更新

正常是一个View对应一个ViewModel

然后View的DataContext是ViewModel。

View中的命令和显示数据都绑定在ViewModel中。

我在工作中遇到了一个错误,在一个ViewModel中改变属性的值,不会反馈到界面上。

调试得知,这个ViewModel中经过了两次构造,也就是生成了两个对象。

假设这两个ViewModel分别是VMA和VMB;

其中我的View的命令绑定在了VMA中的方法,View的显示数据数据绑定在了VMB中。

所以当我触发命令时,实际上是吧VMA中的数据更新了,VMB中并没有更新,导致界面数据不发生改变;

导致这种问题的原因是因为我在xaml文件中和xaml.cs都编写了绑定代码,但是我在xaml.cs文件中又重新获取了一个ViewModel对象。

xaml中:

界面后台绑定的对象是反序列化得到的。

xaml.cs中:

ViewModel是我重新在ioc容器中获取的。问题就出现在这里,反序列化得到一个,ioc容器中得到一个,导致混乱。

返回列表