news 2026/7/31 5:31:40

Wpf中ObservableCollection集合赋值遇到的坑

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Wpf中ObservableCollection集合赋值遇到的坑

在Wpf中使用ObservableCollection定义数组数据时,由于该类型变量已继承 INotifyCollectionChanged,所以无需重写get,set属性,只需声明get,set属性即可实现变量在改变时通知到界面,所以常常被用来定义需要Datagrid控件显示的内容,但是这里有个细节要注意,如果直接对ObservableCollection变量通过等号(=)赋值,界面是不会同步触发数据修改的。
举例如下:
声明变量

/// <summary>/// 原始检测数据/// </summary>publicObservableCollection<MyYoloData>MyDetectData{get;set;}=newObservableCollection<MyYoloData>();/// <summary>/// 检测数据汇总/// </summary>publicObservableCollection<DetectResult>MydetectDataSummary{get;set;}=newObservableCollection<DetectResult>();

正确方法:使用如下代码1对变量进行赋值,界面会同步更新

MydetectDataSummary.Clear();ObservableCollection<DetectResult>MydetectDataSummaryTemp=CMain.Instacn.SummarryDetectData(MyDetectData);for(inti=0;i<MydetectDataSummaryTemp.Count;i++){MydetectDataSummary.Add(MydetectDataSummaryTemp[i]);}

错误方法:使用如下代码2进行赋值,界面不会同步更新

MydetectDataSummary=CMain.Instacn.SummarryDetectData(MyDetectData);

原因分析:
1.代码1不会改变变量的对象,改变的是集合的内容,会触发INotifyCollectionChanged事件从而界面改变
2.代码2会改变变量的实例对象,直接换了容器,界面绑定的是旧容器,旧的没有发生变化,所以界面不会更新
对策:
1.使用代码1
2.将ObservableCollection类别换成List数组,同时需继承INotifyPropertieChanged,重写get;set属性即可

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

挖矿木马深度解析:从原理、检测到防御的完整实战指南

1. 项目概述&#xff1a;当你的电脑成为“矿工”你可能遇到过这样的情况&#xff1a;电脑风扇突然狂转&#xff0c;CPU占用率莫名其妙冲到100%&#xff0c;但任务管理器里又找不到哪个程序在“作妖”。或者&#xff0c;电脑变得异常卡顿&#xff0c;打开个文档都要等半天&#…

作者头像 李华
网站建设 2026/7/31 5:17:58

影刀6.0 AI+RPA在化学资讯自动化中的应用实践

1. 影刀6.0与AI化学资讯整理新范式当RPA工具开始整合AI能力&#xff0c;化学资讯整理这个传统上需要人工参与的领域正在发生质变。影刀6.0最新版本中集成的自然语言处理模块&#xff0c;让"用对话指令驱动自动化流程"成为可能——这完全改变了我们处理化学文献、专利…

作者头像 李华
网站建设 2026/7/31 5:17:00

2026年AI论文生成工具测评与使用指南

1. 论文生成工具测评的必要性2026年的学术环境正在经历一场前所未有的效率革命。作为一名在学术写作领域深耕多年的研究者&#xff0c;我亲眼见证了论文生成工具从最初的简单模板填充&#xff0c;发展到如今能够理解研究逻辑、自动生成高质量内容的智能助手。这种工具的出现彻底…

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

新版J-Link驱动缺失芯片支持文件的三种解决方案

1. 问题缘起&#xff1a;当新版J-Link驱动不再“自带”芯片支持文件如果你最近刚从SEGGER官网下载并安装了最新版的J-Link驱动&#xff08;比如V7.94或更高版本&#xff09;&#xff0c;兴冲冲地准备调试一块新出的或者小众的MCU时&#xff0c;可能会遇到一个令人困惑的局面。按…

作者头像 李华
网站建设 2026/7/31 5:09:31

Rust开发实战:从桌面应用到系统编程的双线探索

1. 从“挖掘机”到“播放器”&#xff1a;一个Rust开发者的双线实战最近在社区里看到不少朋友在讨论Rust&#xff0c;话题从“巨型挖掘机”到“音乐播放器”&#xff0c;跨度不小&#xff0c;乍一看有点摸不着头脑。其实&#xff0c;这恰恰反映了Rust语言当前的两个典型应用场景…

作者头像 李华