我在创建多选逻辑时遇到问题DevExpress
TreeView
。
我有接口treeItem
和 3 个派生类(fe Drive、Directory、File)
我想添加类似的逻辑
- 只能选择多个文件
- 用户是否要选择超过 1 个驱动器或目录,只应选择一个(最后一个)项目
- 如果选择了 fe 2 个文件并且用户 CTRL 并单击 dir 或 drive,则选择应仅包含最后一项(在本例中为 dir 或 drive)
现在我有这样的东西:
<dxg:GridControl
SelectedItems = "{Binding Selection.SelectedItems, Mode=OneWay}"
SelectionChanged="Grid_OnSelectionChanged"
SelectedItemChanged="Grid_OnSelectedItemChanged">
<dxg:GridControl.View>
<dxg:TreeListView MultiSelectMode = "Row"/>
</dxg:GridControl.View>
</dxg:GridControl>
在后面的代码中:
private void MachinesGrid_OnSelectionChanged(object sender, GridSelectionChangedEventArgs e)
{
MyViewModel vm = (MyViewModel)DataContext;
if (e.Action == CollectionChangeAction.Add)
{
if (item.Type == ItemType.Folder)
{
vm.Selection.ClearSelection();
vm.Selection.AddToSelection(item);
}
else
{
vm.Selection.AddToSelection(item);
}
}
}
private void MachinesGrid_OnSelectedItemChanged(object sender, SelectedItemChangedEventArgs e)
{
TreeItem item = e.NewItem as TreeItem;
if (item == null)
{
return;
}
MyViewModel vm = (MyViewModel)DataContext;
vm.Selection.ClearSelection();
vm.Selection.AddToSelection(item);
}
问题在
vm.Selection.ClearSelection();
因为我在枚举时改变了它。
谁能帮我解决这个问题?