への複数選択ロジックの作成に問題がありDevExpress
TreeView
ます。
treeItem
および 3 つの派生クラス (ドライブ、ディレクトリ、ファイル) のインターフェイスがあります。
次のようなロジックを追加したい
- 複数のファイルのみ選択可能
- ユーザーが複数のドライブまたはディレクトリを選択したい場合、1 つ (最後の) 項目のみを選択する必要があります
- fe 2 ファイルが選択され、ユーザー CTRL があり、ディレクトリまたはドライブをクリックすると、選択には最後の項目 (この場合はディレクトリまたはドライブ) のみが含まれる必要があります。
今、私はこのようなsthを持っています:
<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();
列挙時に変更しているためです。
誰でもこの問題を解決できますか?