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);}
}