Pārlūkot izejas kodu

Check for empty items in GetContainerInDirection.

Don't try to navigate into `TreeViewItem`s with no children: this causes a out-of-range exception.

Fixes #2980
Steven Kirk 6 gadi atpakaļ
vecāks
revīzija
75fdd0d343
1 mainītis faili ar 3 papildinājumiem un 2 dzēšanām
  1. 3 2
      src/Avalonia.Controls/TreeView.cs

+ 3 - 2
src/Avalonia.Controls/TreeView.cs

@@ -1,3 +1,4 @@
+
 // Copyright (c) The Avalonia Project. All rights reserved.
 // Licensed under the MIT license. See licence.md file in the project root for full license information.
 
@@ -470,7 +471,7 @@ namespace Avalonia.Controls
                     if (index > 0)
                     {
                         var previous = (TreeViewItem)parentGenerator.ContainerFromIndex(index - 1);
-                        result = previous.IsExpanded ?
+                        result = previous.IsExpanded && previous.ItemCount > 0 ?
                             (TreeViewItem)previous.ItemContainerGenerator.ContainerFromIndex(previous.ItemCount - 1) :
                             previous;
                     }
@@ -482,7 +483,7 @@ namespace Avalonia.Controls
                     break;
 
                 case NavigationDirection.Down:
-                    if (from.IsExpanded && intoChildren)
+                    if (from.IsExpanded && intoChildren && from.ItemCount > 0)
                     {
                         result = (TreeViewItem)from.ItemContainerGenerator.ContainerFromIndex(0);
                     }