87 lines
2.2 KiB
C#
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;
|
|
// }
|
|
// }
|
|
//}
|
|
}
|
|
}
|