news 2026/8/4 8:50:15

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/7/31 4:55:59

高性能计算缓存优化

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

作者头像 李华
网站建设 2026/7/31 4:41:06

使用Python处理计算机图形学(PIL/Pillow)

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

作者头像 李华
网站建设 2026/8/1 10:05:10

模板编译期条件分支

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

作者头像 李华
网站建设 2026/7/31 8:04:46

8个常见错误及避免方法,优化YashanDB数据库使用

在现代信息技术中,数据库的性能和可靠性对企业运营至关重要。如何优化查询速度、提高并发处理能力以及确保数据的完整性,成为了信息技术专家关注的焦点。本篇文章通过分析YashanDB使用中常见的8个错误,提出切实可行的避免方法,助力…

作者头像 李华
网站建设 2026/8/1 7:25:43

数据结构空间复杂度

空间复杂度 空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度 ,空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数,空间复杂度计算规…

作者头像 李华
网站建设 2026/7/31 4:41:32

用Pandas处理时间序列数据(Time Series)

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

作者头像 李华