当前位置: 首页 > 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.hskmm.com/?act=detail&tid=21436

相关文章:

  • 阿里云 CDN 多条件源站配置实战:跨地域环境分流
  • 2025年破碎机厂家最新权威推荐榜:破碎机实力厂商技术服务全景评测及选购指南
  • 什么关系?就是ajax与jQuery
  • 2025标志牌生产厂家最新推荐排行榜:权威筛选优质标志牌品牌,助您精准选对交通标志牌,反光标志牌,道路标志牌供应商!
  • 2025 年脚手架厂家最新推荐榜:铝合金 / 盘扣 / 快装 / 移动式等多类型产品优选及国内实力企业排行指南
  • 2025年沈阳标识标牌厂家最新推荐榜单:涵盖订做标识标牌,广告标识标牌,安全出口标识标牌、不锈钢等多类型标识,全面解读企业产能与技术实力
  • 实用指南:部署 Jenkins 服务器
  • This is my First Blog -BIGBASIS
  • 【光照】[PBR][法线分布]为何不选Beckmann
  • 180课时吃透Go语言游戏后端开发2:Go语言中的变量 - 实践
  • 2025“钉耙编程”中国大学生算法设计暑期联赛(4)
  • qdg
  • 别再迷信甘特图了!90%的项目用它都错了
  • ZyperWin++使用教程!让Windows更丝滑!c盘飘红一键搞定!ZyperWin++解决系统优化、Office安装和系统激活
  • 一文详解决策树:ID3与C4.5算法 - 详解
  • 关于处理大批量数据下载和查询时,怎么进行限流和熔断处理(AI)
  • docker服务器运维
  • Nginx 反向代理与负载均衡核心内容总结 - 实践
  • 这款免费Windows优化神器!只有5M电脑绿色工具!ZyperWin++下载安装教程
  • 原核蛋白表达与真核蛋白表达的差异选择
  • 泛型类型参数
  • 完整教程:【数据结构——十字链表】
  • CF1584E Game with Stones 题解
  • 高德解包和打包报错
  • Python 中的上下文管理器与 `with` 语句全解析
  • 用友U8Api 接口对接
  • 填坑:VC++ 采用OpenSSL 3.0接口方式生成RSA密钥 - 教程
  • JUC:AQS
  • CF1980F2 Field Division (hard version) 题解
  • JUC:ThreadLocal