From e39f2ddd2a4e895d525de696ec3632a89c7dc847 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Sun, 5 Feb 2017 19:15:05 +0300 Subject: [PATCH] Don't spawn 1KK treeview nodes immediately --- .../ControlCatalog/Pages/TreeViewPage.xaml.cs | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/samples/ControlCatalog/Pages/TreeViewPage.xaml.cs b/samples/ControlCatalog/Pages/TreeViewPage.xaml.cs index a630b90dbd..a83f9cf43f 100644 --- a/samples/ControlCatalog/Pages/TreeViewPage.xaml.cs +++ b/samples/ControlCatalog/Pages/TreeViewPage.xaml.cs @@ -11,7 +11,7 @@ namespace ControlCatalog.Pages public TreeViewPage() { this.InitializeComponent(); - DataContext = CreateNodes(0); + DataContext = new Node().Children; } private void InitializeComponent() @@ -19,19 +19,22 @@ namespace ControlCatalog.Pages AvaloniaXamlLoader.Load(this); } - private IList CreateNodes(int level) + public class Node { - return Enumerable.Range(0, 10).Select(x => new Node + private IList _children; + public string Header { get; private set; } + public IList Children { - Header = $"Item {x}", - Children = level < 5 ? CreateNodes(level + 1) : null, - }).ToList(); - } - - private class Node - { - public string Header { get; set; } - public IList Children { get; set; } + get + { + if (_children == null) + { + _children = Enumerable.Range(1, 10).Select(i => new Node() {Header = $"Item {i}"}) + .ToArray(); + } + return _children; + } + } } } }