不要用表达式体去初始化一个用做数据源(比如ItemSource)的引用类型成员。比如这种

public List<MainWindowItem> Items => new List<MainWindowItem>()
{
new MainWindowItem{title="项目管理",icon="\ue613",type=typeof(项目管理Control),group="内部管理"},
new MainWindowItem{title="人力资源管理",icon="\ue828",type=typeof(人力资源管理Control),group="内部管理"},
new MainWindowItem{title="部门管理",icon="\ue7cf",type=typeof(部门管理Control),group="内部管理"},
new MainWindowItem{ title = "项目参与人员管理",icon="\ue608", type = typeof(项目参与人员管理Control), group = "其他管理" },
};

因为每次表达式体实际上是一个语法糖,被翻译成了一个只读属性

public List<MainWindowItem> Items {
get {
return new List<MainWindowItem>()
{
new MainWindowItem{title="项目管理",icon="\ue613",type=typeof(项目管理Control),group="内部管理"},
new MainWindowItem{title="人力资源管理",icon="\ue828",type=typeof(人力资源管理Control),group="内部管理"},
new MainWindowItem{title="部门管理",icon="\ue7cf",type=typeof(部门管理Control),group="内部管理"},
new MainWindowItem{ title = "项目参与人员管理",icon="\ue608", type = typeof(项目参与人员管理Control), group = "其他管理" },
};
}
}

导致每次访问这个属性时,都会重新new一个对象。这个对象和原来绑定到界面的对象不是同一个对象,某些情况下会出现意料之外的结果。

WPF新建viewModel实例化成员的注意事项的更多相关文章

  1. wpf MVVM ViewModel 关闭View显示

    上次说到了不同wpf窗体之间的交互,这个在MVVM模式之中用起来会方便很多 下面我来说下在ViewModel中关闭View的方法,其实也很简单的,注释照样不写,一看就懂的 public partial ...

  2. WPF之ViewModel

    写之前我先唠叨两句,现在公司要求用wpf写个客户端,我之前玩过winform,没怎么用wpf写过正经项目,我接手这个wpf项目之后就开始研究这个东西,MVVM,自定义控件,等等.可能是winfrom先 ...

  3. [WPF] 在 ViewModel 中让数据验证出错(Validation.HasError)的控件获得焦点

    1. 需求 在 MVVM 中 ViewModel 和 View 之间的交互通常都是靠 Icommand 和 INotifyPropertyChanged,不过有时候还会需要从 MVVM 中控制 Vie ...

  4. WPF中viewmodel层怎样得到view层的TabControl控件对象?

    View层: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns: ...

  5. 新建一个Model类的注意事项

    昨天在工作中新建了一个Model类在测试环境测试一点问题也没有,到了生产环境就报错了,由于调用的是分页类,报错说:在520行 _count() 函数不存在. 我的思路是:先到生产环境查看了具体的报错文 ...

  6. WPF在ViewModel中绑定按钮点击(CommandBase定义)

    定义CommandBase public class CommandBase:ICommand { private readonly Action<object> _commandpara ...

  7. vue3.x版本新建项目相关知识和注意事项

    前言你前提应该懂下面基础知识:下载node.js 下好后自带npm 命令 终端查看命令 npm -v 即可看到安装版本安装淘宝镜像:npm install -g cnpm --registry=htt ...

  8. 新建web项目时css注意事项

    初始化css ,如设置body的margin,padding值,button:hover的pointer手型,li dd的list-style,a的下划线等. 最好将常用的初始化css文件整合在一起, ...

  9. Wpf ViewModel中 ObservableCollection不支持从调度程序线程以外的线程对其 SourceCollection 进行的更改

    Wpf中ViewModel类里面经常会需要用到ObservableCollection来管理列表数据,在做异步通信的时候也会碰到“不支持从调度程序线程以外的线程对其 SourceCollection ...

  10. WPF:MVVM模式下ViewModel关闭View

    不外乎两种基本方法. 消息通知和参数传递. 一.消息通知 利用View里的IsEnable属性 原理是这样的: 1.UI中的IsEnabled绑定VM中的属性 2.UI的后台代码中,注册IsEnabl ...

随机推荐

  1. OpenHarmony创新赛 | 您有一份创新激励奖待领取 请查收!

      2023开源和信息消费大赛 开放原子开源大赛OpenHarmony创新赛 (以下简称"OpenHarmony创新赛") 正如火如荼的进行当中 赛程也即将进入到提交作品的关键阶段 ...

  2. 共筑使能千行百业的数字底座 | HDC 2022松湖对话顺利召开

     11月5日,华为开发者大会2022松湖对话在东莞松山湖凯悦酒店召开,开放原子开源基金会秘书长冯冠霖.华为终端BG软件部总裁龚体.深圳国家金融科技测评中心董事长钟剑.鸿湖万联(江苏)科技发展有限公司董 ...

  3. 1. Vectors and Linear Combinations

    1.1 Vectors We have n separate numbers \(v_1.v_2.v_3,...,v_n\),that produces a n-dimensional vector ...

  4. DevEco Device Tool 3.0 Release带来5大能力升级,让智能设备开发更高效

    原文:https://mp.weixin.qq.com/s/QYlHUU05BDlzVxbfZbiKOg,点击链接查看更多技术内容. DevEco Device Tool是面向智能设备开发者提供的一站 ...

  5. Prometheus之grafana(No data to show)

    一.问题现象 1.grafana添加数据源后获取不到监控数据(No data to show) 2.prometheus以下报错 二.问题原因 服务器与浏览器时间不同步的原因,服务器端配置NTP服务和 ...

  6. python mmsql连接支持

    前言 因为我使用的是mmsql数据库,因为遇到一点坑,所以发布出来. 正文 准备工作: https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql 下载对应 ...

  7. NodeJS安装cnpm

    介绍: NPM(Node Package Manager):Node的包管理器. CNPM(Chinese CPM):中国的NPM(国内使用,网速较快). 配置步骤 用npm安装cnpm npm in ...

  8. React 逃离闭包陷阱

    众所周知,JavaScript 中的闭包(Closures)一定是这种语言最可怕的特性之一,即使是无所不知的 ChatGPT 也是这样说的.另外它可能也是最隐蔽的语言特性之一,我们在编写 React  ...

  9. javascript现代编程系列教程之三——数值表示方式

    在64位浮点数的表示中,我们使用了一个叫做"偏移二进制"的技术来存储指数.这是因为我们需要在有限的位数(在这种情况下是11位)内表示正数和负数. 让我们更详细地解释一下: 符号位: ...

  10. python:在cmd中输入pip install pandas 显示‘pip’不是内部或外部命令,也不是可运行的程序 或批处理文件解决办法

    1.首先找到自己文件夹中python的安装位置,一定要在Scripts文件夹下,可以看到pip文件,复制这时候的路径 2.使用快捷键  "win +R"打开cmd窗口,首先进入自己 ...