我在为DevExpress
TreeView
创建多选逻辑时遇到问题。
我有treeItem
的接口和3个派生类(f.e.Drive,Directory,File)
我想添加类似
的逻辑现在我有这样的想法:
<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();
因为我在枚举时正在改变它。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
您可以查看DevExpress help lib。它就像微软那样称为MSDN。
有一个SelectedRowsCollection属性可以绑定到您的VM而不是简单get
来自绑定属性