Skip to content

Commit 7434aee

Browse files
committed
fix: select all button crash issue.
1 parent 43e53d9 commit 7434aee

File tree

1 file changed

+30
-22
lines changed

1 file changed

+30
-22
lines changed

src/Shared/HandyControl_Shared/Controls/Attach/SelectAllButtonAttach.cs

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ private static void OnTargetChanged(DependencyObject d, DependencyPropertyChange
3838
return;
3939
}
4040

41+
button.IsEnabled = GetIsEnabled(newSelector);
4142
button.Click += OnButtonOnClick;
4243
newSelector.SelectionChanged += OnSelectorSelectionChanged;
4344

@@ -88,40 +89,47 @@ private static void OnSelectorSelectionChanged(object sender, SelectionChangedEv
8889

8990
private static void SelectAll(Selector selector)
9091
{
91-
if (selector is MultiSelector multiSelector)
92-
{
93-
multiSelector.SelectAll();
94-
}
95-
else if (selector is ListBox listBox)
96-
{
97-
listBox.SelectAll();
92+
switch (selector)
93+
{
94+
case MultiSelector multiSelector:
95+
multiSelector.SelectAll();
96+
break;
97+
case ListBox listBox:
98+
listBox.SelectAll();
99+
break;
98100
}
99101
}
100102

101103
private static void UnselectAll(Selector selector)
102104
{
103-
if (selector is MultiSelector multiSelector)
104-
{
105-
multiSelector.UnselectAll();
106-
}
107-
else if (selector is ListBox listBox)
108-
{
109-
listBox.UnselectAll();
105+
switch (selector)
106+
{
107+
case MultiSelector multiSelector:
108+
multiSelector.UnselectAll();
109+
break;
110+
case ListBox listBox:
111+
listBox.UnselectAll();
112+
break;
110113
}
111114
}
112115

113116
private static int GetSelectedItemsCount(Selector selector)
114117
{
115-
if (selector is MultiSelector multiSelector)
118+
return selector switch
116119
{
117-
return multiSelector.SelectedItems.Count;
118-
}
120+
MultiSelector multiSelector => multiSelector.SelectedItems.Count,
121+
ListBox listBox => listBox.SelectedItems.Count,
122+
_ => 0
123+
};
124+
}
119125

120-
if (selector is ListBox listBox)
126+
private static bool GetIsEnabled(Selector selector)
127+
{
128+
return selector switch
121129
{
122-
return listBox.SelectedItems.Count;
123-
}
124-
125-
return 0;
130+
DataGrid dataGrid => dataGrid.SelectionMode is not DataGridSelectionMode.Single,
131+
ListBox listBox => listBox.SelectionMode is not SelectionMode.Single,
132+
_ => false
133+
};
126134
}
127135
}

0 commit comments

Comments
 (0)