由于某种原因,ListBox不是MultiSelector。相反,它实现了自己的SelectedItems属性 我有一个DataGrid和一个ListBox,我想把它们都当作一个MultiSelector,所以我可以这样做:
var selectedItems = dataGridOrListBox.SelectedItems;
有没有办法做到这一点?
还有一个很好的理由让ListBox不是MultiSelector吗?
答案 0 :(得分:1)
您可以创建自己的MultiSelector接口以及实现它的派生ListBox和DataGrid类:
public interface IMultiSelector
{
IList SelectedItems { get; }
}
public class MyListBox : ListBox, IMultiSelector
{
}
public class MyDataGrid : DataGrid, IMultiSelector
{
}
在XAML中使用它们,如下所示:
<local:MyListBox ... SelectionChanged="OnSelectionChanged"/>
<local:MyDataGrid ... SelectionChanged="OnSelectionChanged"/>
现在您可以访问公共的SelectedItems属性(例如,在一个常见的SelectionChanged处理程序中),如下所示:
private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
var multiSelector = (IMultiSelector)sender;
var selectedItems = multiSelector.SelectedItems;
...
}