ObservableCollection子项属性字段值变化的监听处理

news/2025/9/30 14:02:58/文章来源:https://www.cnblogs.com/timskt/p/19120983

ViewModel代码


var userList = new List < GroupSelectMemberItemVo > ();
foreach(ChatGroupUserRes chatGroupUserRese in DesktopConst.GroupUserSelectList) 
{var item = chatGroupUserRese.Adapt < GroupSelectMemberItemVo > ();item.Image = string.IsNullOrEmpty(chatGroupUserRese.UserAvatar) ? DesktopConst.GroupTransferDefaultUserAvatar : chatGroupUserRese.UserAvatar;item.Text = chatGroupUserRese.UserName;item.Id = (long) chatGroupUserRese.UserId!;item.OnSelectChangedAction += Vo.OnItemSelectChanged;userList.Add(item);
}
Vo.UserItems.AddRange(userList);
Vo.UserShowItems.AddRange(userList);
Vo.SelectTotal = Vo.SelectItems.Count;
Vo.SelectItemsChangeTrigger = Vo.SelectItems.Count;
Vo.UserShowItemsChangeTrigger = Vo.UserShowItems.Count;

Vo代码

public partial class GroupUserSelectWindowVo : ObservableObject 
{[ObservableProperty] private int _selectTotal;[ObservableProperty] private ObservableCollection<GroupSelectMemberItemVo> _userItems = new();[ObservableProperty] private ObservableCollection<GroupSelectMemberItemVo> _userShowItems = new();[ObservableProperty] private ObservableCollection<GroupSelectMemberItemVo> _selectItems = new();[ObservableProperty] private string _searchName;[ObservableProperty] private int _selectItemsChangeTrigger = 0;[ObservableProperty] private int _userShowItemsChangeTrigger = 0;// 回调函数:当任何一个子项的 Select 改变时调用public void OnItemSelectChanged(GroupSelectMemberItemVo item, bool isSelected) {if (isSelected) {if (!SelectItems.Contains(item))SelectItems.Add(item);} else {SelectItems.Remove(item);}// 更新选中总数SelectTotal = SelectItems.Count;UserShowItemsChangeTrigger = UserShowItems.Count;SelectItemsChangeTrigger = SelectItems.Count;}partial void OnSelectItemsChanged(ObservableCollection<GroupSelectMemberItemVo> value) {SelectItemsChangeTrigger = SelectItems.Count;}partial void OnUserShowItemsChanged(ObservableCollection<GroupSelectMemberItemVo> value) {UserShowItemsChangeTrigger = UserShowItems.Count;}
}

Vo代码

public partial class GroupSelectMemberItemVo : ObservableObject
{[ObservableProperty] private string _text;[ObservableProperty] private string _image;[ObservableProperty] private long _id;[ObservableProperty] private bool _select = false;public Action<GroupSelectMemberItemVo, bool>? OnSelectChangedAction { get; set; }partial void OnSelectChanged(bool value){OnSelectChangedAction?.Invoke(this,value);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/922905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

故障处理:Oracle一体机更换磁盘控制器后部分磁盘状态异常的案例处理

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。这是今年和朋…

凡科建站怎么做微网站广州市专业做网站

废话不多说直接上代码 class 派生类名:&#xff3b;继承方式&#xff3d; 基类名{ 派生类新增加的成员 }; 继承方式限定了基类成员在派生类中的访问权限&#xff0c;包括 public&#xff08;公有的&#xff09;、private&#xff08;私有的&#xff09;和 protected&…

大模型落地实践指南:从技术路径到企业级解决强大的方案

大模型落地实践指南:从技术路径到企业级解决强大的方案pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&…

阿里云 CDN 多条件源站配置实战:跨地域环境分流

1.背景需求企业在 中国大陆 和 新加坡 各自部署了环境,整体服务逻辑一致。需求:中国用户 → 访问中国区源站。 海外用户 → 访问新加坡源站。源站分为两类:应用服务源站(双 IP)。 静态资源源站(双 OSS 域名)。 …

河北常见网站建设价格百度做网站需要多少钱

目录 一、TCP 基本信息 1.1、TCP 的头格式 1.2、什么是 TCP 1.3、什么是 TCP 连接 1.4、TCP 与 UDP 的区别 1.2、TCP 连接建立 1.2.1、TCP 三次握手的过程 1.2.2、为什么是三次握手&#xff1f;不是两次&#xff1f;四次&#xff1f;&#xff08;这个问题真是典中典&am…

23种设计模式——组合模式(Composite Pattern) - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站开发报价单 excel曰本做爰l网站

文档介绍&#xff1a;6.5 算术逻辑单元一、ALU 电路四位 ALU 74181M 0 算术运算M 1 逻辑运算S3 ~ S0 不同取值,可做不同运算ALUAiBiFi…SiM位片式运算器4位双极型位片式运算器AM2901,它将ALU、通用寄存器组、多路开关、移位器等逻辑构件集成在一个芯片内。通用寄存器寄存器写…

2025年破碎机厂家最新权威推荐榜:破碎机实力厂商技术服务全景评测及选购指南

在矿山开发、冶金加工、建材生产等核心领域,破碎机作为关键生产装备,其性能与服务直接决定项目效率、资源利用率及运营成本。当前市场中,破碎机品牌超千家,产品质量与服务能力却存在显著差距:部分厂商缺乏核心技术…

网站做发做网站站长先把作息和身体搞好

当某些sql因为不知名原因堵塞时&#xff0c;为了不影响后台服务运行&#xff0c;想要给sql增加执行时间限制&#xff0c;超时后就抛异常&#xff0c;保证后台线程不会因为sql堵塞而堵塞。 方法一 yml全局配置&#xff1a;单数据源可以&#xff0c;多数据源时会失效 方法二 j…

什么关系?就是ajax与jQuery

什么关系?就是ajax与jQuerypre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

网站建设过时了吗没有网站没有推广如何做外贸

目录 1 创建购物车2 增加数量3 减少数量4 切换分类时回填数据5 显示购物车信息总结 我们上一篇搭建了点餐业务的数据初始化加载&#xff0c;本篇实现一下加入购物车的功能。在购物车设计的时候有两种方案&#xff0c;一种是使用数据表的方案&#xff0c;一种是使用变量的方案。…

完整教程:Redis数据结构和常用命令

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【光照】[PBR][法线分布]为何不选Beckmann

本文探讨了Beckmann分布函数在游戏渲染中的应用及其与GGX的对比。Beckmann是最早的微表面法线分布函数,基于高斯分布假设,具有物理准确性但计算复杂度较高。GGX因更符合真实材质反射特性、能量守恒良好、计算效率更高…

网站导航页面制作网站宣传页面

题目 给定一个长度为 n1 的数组nums&#xff0c;数组中所有的数均在 1∼n 的范围内&#xff0c;其中 n≥1。请找出数组中任意一个重复的数&#xff0c;但不能修改输入的数组。样例 给定 nums [2, 3, 5, 4, 3, 2, 6, 7]。 返回 2 或 3。思考题&#xff1a; 如果只能使用 O(1) …

钓鱼网站怎么做的专做衬衫的网站

英语自我介绍&#xff0c;介绍完老师会根据你的回答用英语问你问题&#xff0c;比如介绍一下你的本科学校&#xff0c;或者家乡什么的。计网过一遍&#xff0c;会问两道题。接下来是重点&#xff0c;我当时是根据我成绩单&#xff0c;问了我本科学过的科目&#xff0c;比如pyth…

2025标志牌生产厂家最新推荐排行榜:权威筛选优质标志牌品牌,助您精准选对交通标志牌,反光标志牌,道路标志牌供应商!

随着道路建设与交通管理需求的不断提升,标志牌作为保障通行安全、传递交通信息的核心设施,市场需求持续增长。但当前标志牌生产行业中,厂家数量繁杂,产品质量差距悬殊 —— 部分产品存在铝板厚度不达标、反光膜亮度…

2025 年脚手架厂家最新推荐榜:铝合金 / 盘扣 / 快装 / 移动式等多类型产品优选及国内实力企业排行指南

2025 年国内脚手架行业在基建加码与装配式建筑发展中持续扩容,但市场痛点凸显:传统扣件式产品仍占 42% 份额,安全与效率短板显著,钢管价格上涨进一步压缩利润空间,新国标下部分产品合规性不足。更关键的是,近五年…

清远网站seo公司网站建设平台策划

Hello大家好我是咕噜铁蛋&#xff01;你是否曾为生成二维码而烦恼过&#xff1f;别担心&#xff0c;今天我就来给你支招&#xff01;&#xff0c;我将分享如何使用Java生成微信小程序二维码的方法&#xff0c;让你轻松应对二维码生成的需求。微信小程序是一种轻量级的应用程序&…

2025年沈阳标识标牌厂家最新推荐榜单:涵盖订做标识标牌,广告标识标牌,安全出口标识标牌、不锈钢等多类型标识,全面解读企业产能与技术实力

在城市建设加速、商业场景多元化的当下,标识标牌作为信息传递与环境导向的核心载体,其品质与服务直接影响项目落地效果。然而,当前市场上标识标牌厂家数量繁杂,部分企业存在产能不足、技术落后、设计同质化等问题,…

网站开发研究的方法与技术路线网络营销渠道的功能

哥伦比亚大学实力介绍哥伦比亚大学除去常青藤的榜首地位&#xff0c;研究生的金融工程 更是被人们称为是金工届的magic seven 并且商学院以及MBA项目是很多人垂涎已久的。更有远近闻名的国际公共关系事物学院&#xff0c;以及新闻专业。2020年TFE Times美国计算机科学硕士排名参…