1

我在创建多选逻辑时遇到问题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();

因为我在枚举时改变了它。

谁能帮我解决这个问题?

4

1 回答 1

0

你可以看看DevExpress 帮助库。它就像微软的 MSDN 一样。

有一个SelectedRowsCollection属性,您可以将其绑定到您的 VM 中,而不是简单get地从您绑定的属性中获取

于 2013-08-05T15:27:05.960 回答