From 7434aee2b58135f1f649f8008872c4d493034bde Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Fri, 26 Sep 2025 22:46:31 +0800 Subject: [PATCH] fix: select all button crash issue. --- .../Controls/Attach/SelectAllButtonAttach.cs | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/src/Shared/HandyControl_Shared/Controls/Attach/SelectAllButtonAttach.cs b/src/Shared/HandyControl_Shared/Controls/Attach/SelectAllButtonAttach.cs index 252c4190..6504d05a 100644 --- a/src/Shared/HandyControl_Shared/Controls/Attach/SelectAllButtonAttach.cs +++ b/src/Shared/HandyControl_Shared/Controls/Attach/SelectAllButtonAttach.cs @@ -38,6 +38,7 @@ public class SelectAllButtonAttach return; } + button.IsEnabled = GetIsEnabled(newSelector); button.Click += OnButtonOnClick; newSelector.SelectionChanged += OnSelectorSelectionChanged; @@ -88,40 +89,47 @@ public class SelectAllButtonAttach private static void SelectAll(Selector selector) { - if (selector is MultiSelector multiSelector) + switch (selector) { - multiSelector.SelectAll(); - } - else if (selector is ListBox listBox) - { - listBox.SelectAll(); + case MultiSelector multiSelector: + multiSelector.SelectAll(); + break; + case ListBox listBox: + listBox.SelectAll(); + break; } } private static void UnselectAll(Selector selector) { - if (selector is MultiSelector multiSelector) + switch (selector) { - multiSelector.UnselectAll(); - } - else if (selector is ListBox listBox) - { - listBox.UnselectAll(); + case MultiSelector multiSelector: + multiSelector.UnselectAll(); + break; + case ListBox listBox: + listBox.UnselectAll(); + break; } } private static int GetSelectedItemsCount(Selector selector) { - if (selector is MultiSelector multiSelector) + return selector switch { - return multiSelector.SelectedItems.Count; - } + MultiSelector multiSelector => multiSelector.SelectedItems.Count, + ListBox listBox => listBox.SelectedItems.Count, + _ => 0 + }; + } - if (selector is ListBox listBox) + private static bool GetIsEnabled(Selector selector) + { + return selector switch { - return listBox.SelectedItems.Count; - } - - return 0; + DataGrid dataGrid => dataGrid.SelectionMode is not DataGridSelectionMode.Single, + ListBox listBox => listBox.SelectionMode is not SelectionMode.Single, + _ => false + }; } }