不要用表达式体去初始化一个用做数据源(比如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. 为什么 L1 正则化能做特征选择而 L2 正则化不能

    假设我们的模型只有一个参数 \(w\),损失函数为 \(L(w)\),加入 L1 和 L2 正则化后的损失函数分别记为 \(J_1(w), J_2(w)\): \[\begin{gathered} J ...

  2. 代码覆盖率检查工具 -- Coverage,简单使用

    Coverage 一个专门用来检查代码覆盖率的工具,他的使用非常简单,有两种使用方法:[命令行运行,配合测试套件使用] 安装: pip install coverage 一.准备素材 main.py ...

  3. Python基于Excel数据加以反距离加权空间插值并掩膜图层

      本文介绍基于Python中ArcPy模块,实现Excel数据读取并生成矢量图层,同时进行IDW插值与批量掩膜的方法. 1 任务需求   首先,我们来明确一下本文所需实现的需求.   现有一个记录有 ...

  4. 重新整理数据结构与算法(c#)—— 树的节点删除[十八]

    前言 你好这里的一个删除,指的是如果删除的叶子节点则直接删除,如果删除的是非叶子节点,则删除的是这颗子树. 这样删除的场景并不多,这种删除方式了解即可. 十七和十六没有放树图,把树图放一下. 正文 节 ...

  5. json文件读取并转换成为字典python

    # JSON到字典转化 f2 = open('info.json', 'r') info_data = json.load(f2) print(info_data) # 显示数据类型 print(ty ...

  6. 《Effective C#》系列之(一)——异常处理与资源管理

    请注意,<Effective C#>中的异常处理与资源管理部分实际上是第四章的内容.以下是关于该章节的详细解释. 第四章:异常处理与资源管理 一. 了解异常处理机制 异常处理机制使程序员能 ...

  7. 【笔记】Java相关大杂烩②

    [笔记]Java相关大杂烩② if单分支情况下,如果没有加 {},那么默认只包含第一条语句. if 和 else 分支后面如果包含多条语句,那么需要使用 {} 括起来. 不能随意地使用数学上的表达方式 ...

  8. 力扣342(java)-4的幂(简单)

    题目: 给定一个整数,写一个函数来判断它是否是 4 的幂次方.如果是,返回 true :否则,返回 false . 整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x 示例 1: 输 ...

  9. [Linux] 启动管理: 运行级别

    Link:https://www.cnblogs.com/farwish/p/14983932.html

  10. 利用MOS管构成基本的数字逻辑门

    欢迎各位朋友关注"郝旭帅电子设计团队",本微信公众号会定时更新相关技术类资料.软件等等,希望各位朋友都能在本微信公众号获得一些自己想要的"东西". 非门原理图中 ...