news 2026/6/1 21:06:08

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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容器中得到一个,导致混乱。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/31 23:21:53

8个常见问题帮助您更好使用YashanDB数据库

在当前数据驱动的业务环境中,数据库技术正成为企业实现数字化转型的核心工具。然而,许多企业在数据库的选择、使用及管理过程中面临各种挑战,其中包括性能瓶颈、数据一致性问题和安全隐患等。YashanDB作为一款新兴的数据库系统,凭…

作者头像 李华
网站建设 2026/5/30 5:23:40

8个技巧优化YashanDB数据库的开发流程

在现代应用中,数据库的性能直接影响到整体系统的效率,尤其是对于大规模数据处理和复杂查询场景。如何提升YashanDB的开发效率以及查询性能,成为众多开发者关注的焦点。接下来将介绍8个技巧,帮助开发者优化YashanDB数据库的开发流程…

作者头像 李华
网站建设 2026/5/28 23:46:33

C++中的函数式编程

1、非修改序列算法 这些算法不会改变它们所操作的容器中的元素。 1.1 find 和 find_if find(begin, end, value):查找第一个等于 value 的元素,返回迭代器(未找到返回 end)。find_if(begin, end, predicate):查找第…

作者头像 李华
网站建设 2026/5/31 18:15:30

泛型编程与STL设计思想

1、非修改序列算法 这些算法不会改变它们所操作的容器中的元素。 1.1 find 和 find_if find(begin, end, value):查找第一个等于 value 的元素,返回迭代器(未找到返回 end)。find_if(begin, end, predicate):查找第…

作者头像 李华
网站建设 2026/5/29 23:28:57

使用Black自动格式化你的Python代码

SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式。本文将介绍如何使用SQLAlchemy ORM进行数据库操作。目录安装SQLAlchemy核心概念连接数据库定义数据模型创建数据库表基本CRUD操作查询数据关系操…

作者头像 李华
网站建设 2026/5/6 2:20:29

python安卓客户端室内定位APP_jrate小程序

目录室内定位技术概述Python在安卓端的实现方案关键代码示例(Kivy蓝牙信标)注意事项开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!室内定位技术概述 室内定位技术通…

作者头像 李华