From bbdca4ebcb49529c1bfdbd738d14900a646b0d04 Mon Sep 17 00:00:00 2001 From: yali-hzy <48376189+yali-hzy@users.noreply.github.com> Date: Fri, 9 Jan 2026 01:12:23 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=20CopilotItemVie?= =?UTF-8?q?wModel=20=E4=B8=AD=E7=9A=84=20Index=20=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E5=B9=B6=E6=9B=B4=E6=96=B0=E7=9B=B8=E5=85=B3=E9=80=BB=E8=BE=91?= =?UTF-8?q?=20(#15328)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/CopilotItemViewModel.cs | 8 ---- .../ViewModels/UI/CopilotViewModel.cs | 37 +++++-------------- src/MaaWpfGui/Views/UI/CopilotView.xaml | 6 +-- 3 files changed, 12 insertions(+), 39 deletions(-) diff --git a/src/MaaWpfGui/ViewModels/CopilotItemViewModel.cs b/src/MaaWpfGui/ViewModels/CopilotItemViewModel.cs index bceef4f6a8..9798b76b1f 100644 --- a/src/MaaWpfGui/ViewModels/CopilotItemViewModel.cs +++ b/src/MaaWpfGui/ViewModels/CopilotItemViewModel.cs @@ -90,12 +90,4 @@ public class CopilotItemViewModel : PropertyChangedBase Instances.CopilotViewModel.SaveCopilotTask(); } } - - private int _index; - - public int Index - { - get => _index; - set => SetAndNotify(ref _index, value); - } } diff --git a/src/MaaWpfGui/ViewModels/UI/CopilotViewModel.cs b/src/MaaWpfGui/ViewModels/UI/CopilotViewModel.cs index c801d99a56..080591c846 100644 --- a/src/MaaWpfGui/ViewModels/UI/CopilotViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/CopilotViewModel.cs @@ -128,7 +128,6 @@ public partial class CopilotViewModel : Screen var list = JsonConvert.DeserializeObject>(copilotTaskList) ?? []; for (int i = 0; i < list.Count; i++) { - list[i].Index = i; CopilotItemViewModels.Add(list[i]); } @@ -948,9 +947,9 @@ public partial class CopilotViewModel : Screen [UsedImplicitly] public void SelectCopilotTask(object? sender, MouseButtonEventArgs? e = null) { - if (e?.Source is FrameworkElement element && element.Tag is int index) + if (e?.Source is FrameworkElement element && element.Tag is CopilotItemViewModel item) { - Filename = CopilotItemViewModels[index].FilePath; // 假设原方法接受int参数 + Filename = item.FilePath; if (e.ChangedButton == MouseButton.Right) { UseCopilotList = false; @@ -960,10 +959,10 @@ public partial class CopilotViewModel : Screen // UI 绑定的方法 [UsedImplicitly] - public void DeleteCopilotTask(int index) + public void DeleteCopilotTask(CopilotItemViewModel item) { - CopilotItemViewModels.RemoveAt(index); - CopilotItemIndexChanged(); + CopilotItemViewModels.Remove(item); + SaveCopilotTask(); } // UI 绑定的方法 @@ -974,8 +973,7 @@ public partial class CopilotViewModel : Screen { CopilotItemViewModels.Remove(item); } - - CopilotItemIndexChanged(); + SaveCopilotTask(); } // UI 绑定的方法 @@ -1659,20 +1657,20 @@ public partial class CopilotViewModel : Screen name ??= stageCode; - var item = new CopilotItemViewModel(name, cachePath, false, copilotId) { Index = CopilotItemViewModels.Count, TabIndex = CopilotTabIndex, }; + var item = new CopilotItemViewModel(name, cachePath, false, copilotId) { TabIndex = CopilotTabIndex, }; CopilotItemViewModels.Add(item); } else { if (flags.HasFlag(CopilotModel.DifficultyFlags.Normal)) { - var item = new CopilotItemViewModel(stageCode, cachePath, false, copilotId) { Index = CopilotItemViewModels.Count, TabIndex = CopilotTabIndex, }; + var item = new CopilotItemViewModel(stageCode, cachePath, false, copilotId) { TabIndex = CopilotTabIndex, }; CopilotItemViewModels.Add(item); } if (flags.HasFlag(CopilotModel.DifficultyFlags.Raid)) { - var item = new CopilotItemViewModel(stageCode, cachePath, true, copilotId) { Index = CopilotItemViewModels.Count, TabIndex = CopilotTabIndex, }; + var item = new CopilotItemViewModel(stageCode, cachePath, true, copilotId) { TabIndex = CopilotTabIndex, }; CopilotItemViewModels.Add(item); } } @@ -1715,23 +1713,6 @@ public partial class CopilotViewModel : Screen }); } - /// - /// 更新任务顺序 - /// UI 绑定的方法 - /// - [UsedImplicitly] - public void CopilotItemIndexChanged() - { - Execute.OnUIThread(() => { - for (int i = 0; i < CopilotItemViewModels.Count; i++) - { - CopilotItemViewModels[i].Index = i; - } - - SaveCopilotTask(); - }); - } - /// /// Starts copilot. /// UI 绑定的方法 diff --git a/src/MaaWpfGui/Views/UI/CopilotView.xaml b/src/MaaWpfGui/Views/UI/CopilotView.xaml index 05e72fe546..dbc5d7977d 100644 --- a/src/MaaWpfGui/Views/UI/CopilotView.xaml +++ b/src/MaaWpfGui/Views/UI/CopilotView.xaml @@ -515,7 +515,7 @@ hc:BorderElement.CornerRadius="4,4,0,0" properties:AutoScroll.AutoScroll="True" BorderThickness="1,1,1,0" - DragDrop.Drop="{s:Action CopilotItemIndexChanged}" + DragDrop.Drop="{s:Action SaveCopilotTask}" IsEnabled="{c:Binding StartEnabled}" ItemsSource="{Binding Path=CopilotItemViewModels}" Style="{DynamicResource NoSelectedHighlightListBoxStyle}" @@ -559,7 +559,7 @@ IsEnabled="{Binding ElementName=CopilotList, Path=DataContext.Idle}" MouseRightButtonUp="{s:Action SelectCopilotTask}" PreviewMouseLeftButtonUp="{s:Action SelectCopilotTask}" - Tag="{c:Binding Index}" /> + Tag="{Binding}" />