瀏覽代碼

Merge pull request #3227 from AvaloniaUI/fix-listbox-template-init-order

set Scroll before calling base.OnTemplateApplied.
danwalmsley 6 年之前
父節點
當前提交
013ea7acb0
共有 2 個文件被更改,包括 21 次插入1 次删除
  1. 1 1
      src/Avalonia.Controls/ListBox.cs
  2. 20 0
      tests/Avalonia.Controls.UnitTests/ListBoxTests.cs

+ 1 - 1
src/Avalonia.Controls/ListBox.cs

@@ -151,8 +151,8 @@ namespace Avalonia.Controls
 
         protected override void OnTemplateApplied(TemplateAppliedEventArgs e)
         {
-            base.OnTemplateApplied(e);
             Scroll = e.NameScope.Find<IScrollable>("PART_ScrollViewer");
+            base.OnTemplateApplied(e);
         }
     }
 }

+ 20 - 0
tests/Avalonia.Controls.UnitTests/ListBoxTests.cs

@@ -47,6 +47,26 @@ namespace Avalonia.Controls.UnitTests
             Assert.IsType<ItemsPresenter>(target.Presenter);
         }
 
+        [Fact]
+        public void ListBox_Should_Find_Scrollviewer_In_Template()
+        {
+            var target = new ListBox
+            {
+                Template = ListBoxTemplate(),
+            };
+
+            ScrollViewer viewer = null;
+
+            target.TemplateApplied += (sender, e) =>
+            {
+                viewer = target.Scroll as ScrollViewer;
+            };
+
+            Prepare(target);
+
+            Assert.NotNull(viewer);
+        }
+
         [Fact]
         public void ListBoxItem_Containers_Should_Be_Generated()
         {