当前位置: 首页 > news >正文

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

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.gsyq.cn/news/14254.html

相关文章:

  • 2025年破碎机厂家最新权威推荐榜:破碎机实力厂商技术服务全景评测及选购指南
  • 什么关系?就是ajax与jQuery
  • 2025年沈阳标识标牌厂家最新推荐榜单:涵盖订做标识标牌,广告标识标牌,安全出口标识标牌、不锈钢等多类型标识,全面解读企业产能与技术实力
  • 一文详解决策树:ID3与C4.5算法 - 详解
  • 详细介绍:Java数据结构第二十七期:布隆过滤器,用 “模糊” 换高效的查重黑科技
  • 【MacOS】彻底卸载Navicat
  • JUC:AQS
  • JUC:ThreadLocal
  • 学python的第8天
  • 香橙派5pro驱动开发(一)
  • HR如何摆脱入离职事务性内耗?组织管理系统助力聚焦人才价值挖掘
  • Java EE初阶启程记04---线程的状态 - 实践
  • US$44 YH Remote Key Tester Frequency/Infrared IR
  • 【星海出品】RabbitMQ 死信 - 教程
  • Windows 11 局域网打印机共享设置
  • gpd winmax2 fedora42 睡眠秒唤醒问题
  • 本土化战略赋能:Gitee如何领跑中国DevOps黄金赛道
  • CF1699D Almost Triple Deletions
  • 详细介绍:Servlet完全上手:核心语法与生命周期详解
  • 详细介绍:支持17种方言10种外语!阿里最新AI语音合成模型Qwen3-TTS-Flash震撼发布
  • 荒野猎手出击!启明智显ZX7981PO:专治各种恶劣环境的5G插卡路由器
  • AWS CDK重构功能发布:安全重构基础设施即代码
  • 实用指南:上下文工程驱动智能体向 “连续性认知”跃迁
  • 实用指南:基于STM32单片机的OneNet物联网粉尘烟雾检测系统
  • 测试集成CI/CD的五大实践:构建高效质量保障体系
  • 死锁的处理策略-预防死锁
  • 跨网文件安全交换系统:提升数据传输安全性和合规性
  • ArcGIS 公众号推荐
  • 贝叶斯学习笔记 - 详解
  • 设计模式-结构性设计模式(针对类与对象的组织结构) - 指南