浏览代码

#2355 'Select all' support TreeView too, only visible part of tree.

MonkAlex 6 年之前
父节点
当前提交
57dcfadf57
共有 1 个文件被更改,包括 14 次插入0 次删除
  1. 14 0
      src/Avalonia.Controls/TreeView.cs

+ 14 - 0
src/Avalonia.Controls/TreeView.cs

@@ -10,6 +10,7 @@ using Avalonia.Collections;
 using Avalonia.Controls.Generators;
 using Avalonia.Controls.Generators;
 using Avalonia.Controls.Primitives;
 using Avalonia.Controls.Primitives;
 using Avalonia.Input;
 using Avalonia.Input;
+using Avalonia.Input.Platform;
 using Avalonia.Interactivity;
 using Avalonia.Interactivity;
 using Avalonia.Threading;
 using Avalonia.Threading;
 using Avalonia.VisualTree;
 using Avalonia.VisualTree;
@@ -402,6 +403,19 @@ namespace Avalonia.Controls
                     SelectedItem = ElementAt(Items, 0);
                     SelectedItem = ElementAt(Items, 0);
                 }
                 }
             }
             }
+
+            if (!e.Handled)
+            {
+                var keymap = AvaloniaLocator.Current.GetService<PlatformHotkeyConfiguration>();
+                bool Match(List<KeyGesture> gestures) => gestures.Any(g => g.Matches(e));
+
+                if (this.SelectionMode == SelectionMode.Multiple && Match(keymap.SelectAll))
+                {
+                    var allVisibleItems = ItemContainerGenerator.Index.Items.Select(ItemContainerGenerator.Index.ItemFromContainer);
+                    SelectingItemsControl.SynchronizeItems(SelectedItems, allVisibleItems);
+                    e.Handled = true;
+                }
+            }
         }
         }
 
 
         private TreeViewItem GetContainerInDirection(
         private TreeViewItem GetContainerInDirection(