using BeWo.ServiceProxy; using BS.Shared.DataContracts.Feature.AI; using BS.Shared.Extensions; using ChatController.Utilities.Extensions; using DevExpress.Mvvm; using DevExpress.XtraPrinting.Native; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Data; using System.Windows.Threading; namespace BeWo.ViewModel.ListViewModel { public class AiConversationMessageListVM : AbstractDCListMapperVM { public AiConversationMessageListVM(List pDCs) : base(pDCs) { foreach(var vm in VMList) { vm.IsCheckedChanged += CloneIsCheckedChanged; } //VMList.ListChanged += (s, e) => // { // if (e.ListChangedType == ListChangedType.ItemChanged) // { // var changedItem = VMList[e.NewIndex]; // Item_PropertyChanged(changedItem, new PropertyChangedEventArgs(nameof(AiConversationMessageVM.IsChecked))); // } // }; } public AiConversationMessageListVM() : this(null) { } private void CloneIsCheckedChanged(object sender, EventArgs e) { if(sender is AiConversationMessageVM vm) { int index = VMList.IndexOf(vm); if (vm.IsChecked) { for (int i = 0; i < index; i++) { VMList[i].SetIsChecked(true); } } else { for (int i = index - 1; i < VMList.Count; i++) { VMList[i].SetIsChecked(false); } } } } //private void Item_PropertyChanged(object sender, PropertyChangedEventArgs e) //{ // if (e.PropertyName == nameof(AiConversationMessageVM.IsChecked) // && sender is AiConversationMessageVM vm // && vm.Role == BS.Shared.AiConversationMessageRole.Assistent) // { // var changedItem = (AiConversationMessageVM)sender; // int index = VMList.IndexOf(changedItem); // if (changedItem.IsChecked) // { // for (int i = 0; i <= index; i++) // if (!VMList[i].IsChecked) // VMList[i].IsChecked = true; // } // else // { // for (int i = index - 1; i < VMList.Count; i++) // if (VMList[i].IsChecked) // VMList[i].IsChecked = false; // } // } //} } }