Files
BeWoPlaner/BeWo/ViewModel/ListViewModel/AiConversationMessageListVM.cs

87 lines
2.2 KiB
C#

using BeWo.ServiceProxy;
using BS.Shared.DataContracts;
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<AiConversationMessageDC, AiConversationMessageVM>
{
public AiConversationMessageListVM(List<AiConversationMessageDC> 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;
// }
// }
//}
}
}