Exemplo n.º 1
0
        public void RemovingLastChildrenSetsIsExpandedToFalse()
        {
            var treeViewRoot  = new TreeViewNode();
            var treeViewNode1 = new TreeViewNode();
            var treeViewNode2 = new TreeViewNode();
            var treeViewNode3 = new TreeViewNode();
            var treeViewNode4 = new TreeViewNode();
            var treeViewNode5 = new TreeViewNode();

            // Need root since in TreeView we otherwise
            // could collapse whole tree and hide it forever
            treeViewRoot.Children.Add(treeViewNode1);

            treeViewNode1.Children.Add(treeViewNode2);
            treeViewNode1.Children.Add(treeViewNode3);
            treeViewNode1.Children.Add(treeViewNode4);
            treeViewNode1.Children.Add(treeViewNode5);

            treeViewNode1.IsExpanded = true;
            Verify.IsTrue(treeViewNode1.IsExpanded);

            treeViewNode1.Children.Clear();
            Verify.IsFalse(treeViewNode1.IsExpanded);

            treeViewNode1.Children.Add(treeViewNode2);
            treeViewNode1.IsExpanded = true;
            Verify.IsTrue(treeViewNode1.IsExpanded);

            treeViewNode1.Children.Remove(treeViewNode2);
            Verify.IsFalse(treeViewNode1.IsExpanded);

            treeViewNode1.Children.Add(treeViewNode2);
            treeViewNode1.IsExpanded = true;
            Verify.IsTrue(treeViewNode1.IsExpanded);

            treeViewNode1.Children.RemoveAt(0);
            Verify.IsFalse(treeViewNode1.IsExpanded);
        }
Exemplo n.º 2
0
        private void SetupExpandingNodeEvent_Click(object sender, RoutedEventArgs e)
        {
            if (IsInContentMode())
            {
                TreeViewItemSource item = new TreeViewItemSource()
                {
                    Content = "Virtualized", HasUnrealizedChildren = true
                };
                TestTreeViewItemsSource[0].Children.Add(item);
                ContentModeTestTreeView.Expanding += ContentModeTestTreeView_Expanding;
            }
            else
            {
                _virtualizedNode = new TreeViewNode()
                {
                    Content = "Virtualized"
                };
                _virtualizedNode.HasUnrealizedChildren = true;
                _visualRoot.Children.Add(_virtualizedNode);

                TestTreeView.Expanding += TestTreeView_Expanding;
            }
        }
Exemplo n.º 3
0
        public void TreeViewUpdateTest()
        {
            TreeView     treeView      = null;
            TreeViewList listControl   = null;
            TreeViewNode treeViewNode1 = null;
            TreeViewNode treeViewNode2 = null;
            TreeViewNode treeViewNode3 = null;
            TreeViewNode treeViewNode4 = null;
            TreeViewNode treeViewNode5 = null;

            var loadedWaiter = new ManualResetEvent(false);

            RunOnUIThread.Execute(() =>
            {
                treeViewNode1 = new TreeViewNode();
                treeViewNode2 = new TreeViewNode();
                treeViewNode3 = new TreeViewNode();
                treeViewNode4 = new TreeViewNode();
                treeViewNode5 = new TreeViewNode();

                treeViewNode1.Children.Add(treeViewNode2);
                treeViewNode1.Children.Add(treeViewNode3);
                treeViewNode1.Children.Add(treeViewNode4);
                treeViewNode1.Children.Add(treeViewNode5);

                treeView = new TreeView();

                treeView.Loaded += (object sender, RoutedEventArgs e) =>
                {
                    listControl = FindVisualChildByName(treeView, "ListControl") as TreeViewList;
                    loadedWaiter.Set();
                };

                MUXControlsTestApp.App.TestContentRoot = treeView;
            });

            Verify.IsTrue(loadedWaiter.WaitOne(TimeSpan.FromMinutes(1)), "Check if Loaded was successfully raised");
            RunOnUIThread.Execute(() =>
            {
                treeView.RootNodes.Add(treeViewNode1);
                Verify.AreEqual(listControl.Items.Count, 1);

                treeView.Expand(treeViewNode1);
                Verify.AreEqual(listControl.Items.Count, 5);

                treeViewNode1.Children.RemoveAt(2);
                Verify.AreEqual(listControl.Items.Count, 4);
                Verify.AreEqual(listControl.Items[0], treeViewNode1);
                Verify.AreEqual(listControl.Items[1], treeViewNode2);
                Verify.AreEqual(listControl.Items[2], treeViewNode3);
                Verify.AreEqual(listControl.Items[3], treeViewNode5);

                treeViewNode1.Children.Insert(1, treeViewNode4);
                Verify.AreEqual(listControl.Items.Count, 5);
                Verify.AreEqual(listControl.Items[0], treeViewNode1);
                Verify.AreEqual(listControl.Items[1], treeViewNode2);
                Verify.AreEqual(listControl.Items[2], treeViewNode4);
                Verify.AreEqual(listControl.Items[3], treeViewNode3);
                Verify.AreEqual(listControl.Items[4], treeViewNode5);

                treeViewNode1.Children.Clear();
                Verify.AreEqual(listControl.Items.Count, 1);
                Verify.AreEqual(listControl.Items[0], treeViewNode1);

                // Put things back
                MUXControlsTestApp.App.TestContentRoot = null;
            });
        }
Exemplo n.º 4
0
        public void TreeViewClearAndSetAtTest()
        {
            TreeView     treeView    = null;
            TreeViewList listControl = null;

            var loadedWaiter = new ManualResetEvent(false);

            RunOnUIThread.Execute(() =>
            {
                treeView         = new TreeView();
                treeView.Loaded += (object sender, RoutedEventArgs e) =>
                {
                    listControl = FindVisualChildByName(treeView, "ListControl") as TreeViewList;
                    loadedWaiter.Set();
                };

                MUXControlsTestApp.App.TestContentRoot = treeView;
            });

            Verify.IsTrue(loadedWaiter.WaitOne(TimeSpan.FromMinutes(1)), "Check if Loaded was successfully raised");
            RunOnUIThread.Execute(() =>
            {
                // Verify TreeViewNode::SetAt
                TreeViewNode setAtChildCheckNode = new TreeViewNode()
                {
                    Content = "Set At Child"
                };
                TreeViewNode setAtRootCheckNode = new TreeViewNode()
                {
                    Content = "Set At Root"
                };

                TreeViewNode child1 = new TreeViewNode()
                {
                    Content = "Child 1"
                };
                child1.Children.Add(new TreeViewNode()
                {
                    Content = "Child 1:1"
                });

                TreeViewNode child2 = new TreeViewNode()
                {
                    Content = "Child 2"
                };
                child2.Children.Add(new TreeViewNode()
                {
                    Content = "Child 2:1"
                });
                child2.Children.Add(new TreeViewNode()
                {
                    Content = "Child 2:2"
                });

                treeView.RootNodes.Add(child1);
                child1.IsExpanded = true;
                treeView.RootNodes.Add(child2);
                Verify.AreEqual(listControl.Items.Count, 3);

                // SetAt node under child node which is not expanded
                child2.Children[1] = setAtChildCheckNode;
                Verify.AreEqual(listControl.Items.Count, 3);

                // SetAt node under root node and child2 is expanded
                treeView.RootNodes[0] = setAtRootCheckNode;
                child2.IsExpanded     = true;
                Verify.AreEqual(listControl.Items.Count, 4);

                // Verify RootNode.Clear
                treeView.RootNodes.Clear();
                Verify.AreEqual(listControl.Items.Count, 0);

                // test clear without any child node
                treeView.RootNodes.Clear();
                Verify.AreEqual(listControl.Items.Count, 0);

                // Put things back
                MUXControlsTestApp.App.TestContentRoot = null;
            });
        }
Exemplo n.º 5
0
        private async void Location_Click(object sender, RoutedEventArgs e)
        {
            if (SearchResultList.SelectedItem is FileSystemStorageItem Item)
            {
                if (Item.StorageType == StorageItemTypes.Folder)
                {
                    try
                    {
                        if (SettingControl.IsDetachTreeViewAndPresenter)
                        {
                            if ((await Item.GetStorageItem().ConfigureAwait(true)) is StorageFolder Folder)
                            {
                                await FileControlInstance.DisplayItemsInFolder(Folder).ConfigureAwait(true);
                            }
                        }
                        else
                        {
                            TreeViewNode TargetNode = await FileControlInstance.FolderTree.RootNodes[0].GetChildNodeAsync(new PathAnalysis(Item.Path, (FileControlInstance.FolderTree.RootNodes[0].Content as TreeViewNodeContent).Path)).ConfigureAwait(true);
                            if (TargetNode != null)
                            {
                                await FileControlInstance.DisplayItemsInFolder(TargetNode).ConfigureAwait(true);
                            }
                            else
                            {
                                throw new Exception();
                            }
                        }
                    }
                    catch
                    {
                        QueueContentDialog dialog = new QueueContentDialog
                        {
                            Title           = Globalization.GetString("Common_Dialog_ErrorTitle"),
                            Content         = Globalization.GetString("QueueDialog_LocateFolderFailure_Content"),
                            CloseButtonText = Globalization.GetString("Common_Dialog_CloseButton")
                        };
                        _ = await dialog.ShowAsync().ConfigureAwait(true);
                    }
                }
                else
                {
                    try
                    {
                        if ((await Item.GetStorageItem().ConfigureAwait(true)) is StorageFile File)
                        {
                            if (SettingControl.IsDetachTreeViewAndPresenter)
                            {
                                await FileControlInstance.DisplayItemsInFolder(await File.GetParentAsync()).ConfigureAwait(true);
                            }
                            else
                            {
                                TreeViewNode CurrentNode = await FileControlInstance.FolderTree.RootNodes[0].GetChildNodeAsync(new PathAnalysis(Path.GetDirectoryName(Item.Path), (FileControlInstance.FolderTree.RootNodes[0].Content as TreeViewNodeContent).Path)).ConfigureAwait(true);

                                await FileControlInstance.DisplayItemsInFolder(CurrentNode).ConfigureAwait(true);
                            }
                        }
                    }
                    catch (FileNotFoundException)
                    {
                        QueueContentDialog dialog = new QueueContentDialog
                        {
                            Title           = Globalization.GetString("Common_Dialog_ErrorTitle"),
                            Content         = Globalization.GetString("QueueDialog_LocateFileFailure_Content"),
                            CloseButtonText = Globalization.GetString("Common_Dialog_RefreshButton")
                        };
                        _ = await dialog.ShowAsync().ConfigureAwait(true);
                    }
                }
            }
        }
Exemplo n.º 6
0
        public async Task TreeViewSelectionChangedMultipleMode()
        {
            // input data:
            // - 1
            //   - 11
            //   - 12
            //   - 13
            // - 2
            //   - 21
            // - 3
            TreeView     treeView = null;
            TreeViewNode node1    = null;
            TreeViewNode node11   = null;
            TreeViewNode node12   = null;
            TreeViewNode node13   = null;
            TreeViewNode node2    = null;
            TreeViewNode node21   = null;
            TreeViewNode node3    = null;
            TreeViewSelectionChangedEventArgs selectionChangedEventArgs = null;
            await RunOnUIThread.ExecuteAsync(() =>
            {
                treeView = new TreeView {
                    SelectionMode = TreeViewSelectionMode.Multiple
                };
                treeView.SelectionChanged += (s, e) => selectionChangedEventArgs = e;

                node1 = new TreeViewNode {
                    Content = "1", IsExpanded = true
                };
                node11 = new TreeViewNode {
                    Content = "11"
                };
                node12 = new TreeViewNode {
                    Content = "12"
                };
                node13 = new TreeViewNode {
                    Content = "13"
                };
                node1.Children.Add(node11);
                node1.Children.Add(node12);
                node1.Children.Add(node13);

                node2 = new TreeViewNode {
                    Content = "2", IsExpanded = true
                };
                node21 = new TreeViewNode {
                    Content = "21"
                };
                node2.Children.Add(node21);

                node3 = new TreeViewNode {
                    Content = "3"
                };

                treeView.RootNodes.Add(node1);
                treeView.RootNodes.Add(node2);
                treeView.RootNodes.Add(node3);
                TestServices.WindowHelper.WindowContent = treeView;
            });

            await TestServices.WindowHelper.WaitForIdle();

            await RunOnUIThread.ExecuteAsync(() =>
            {
                var tvi1  = (TreeViewItem)treeView.ContainerFromItem(node1);
                var tvi11 = (TreeViewItem)treeView.ContainerFromItem(node11);
                var tvi12 = (TreeViewItem)treeView.ContainerFromItem(node12);
                var tvi13 = (TreeViewItem)treeView.ContainerFromItem(node13);
                var tvi2  = (TreeViewItem)treeView.ContainerFromItem(node2);
                var tvi21 = (TreeViewItem)treeView.ContainerFromItem(node21);
                var tvi3  = (TreeViewItem)treeView.ContainerFromItem(node3);

                // - 1         selected
                //   - 11      selected
                //   - 12      selected
                //   - 13      selected
                // - 2
                //   - 21
                // - 3
                tvi1.IsSelected = true;

                Verify.IsNotNull(selectionChangedEventArgs);
                Verify.AreEqual(4, selectionChangedEventArgs.AddedItems.Count);
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node1));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node11));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node12));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node13));
                Verify.AreEqual(0, selectionChangedEventArgs.RemovedItems.Count);
                selectionChangedEventArgs = null;

                // - 1         selected
                //   - 11
                //   - 12      selected
                //   - 13      selected
                // - 2
                //   - 21
                // - 3
                tvi11.IsSelected = true;
                tvi11.IsSelected = false;

                Verify.IsNotNull(selectionChangedEventArgs);
                Verify.AreEqual(0, selectionChangedEventArgs.AddedItems.Count);
                Verify.AreEqual(1, selectionChangedEventArgs.RemovedItems.Count);
                Verify.IsTrue(selectionChangedEventArgs.RemovedItems.Contains(node11));
                selectionChangedEventArgs = null;

                // - 1         selected
                //   - 11      selected
                //   - 12      selected
                //   - 13      selected
                // - 2         selected
                //   - 21      selected
                // - 3         selected
                treeView.SelectAll();
                Verify.IsNotNull(selectionChangedEventArgs);
                var items = selectionChangedEventArgs.AddedItems.ToList();
                Verify.AreEqual(7, selectionChangedEventArgs.AddedItems.Count);
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node1));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node11));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node12));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node13));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node2));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node21));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node3));
                Verify.AreEqual(0, selectionChangedEventArgs.RemovedItems.Count);
            });
        }
Exemplo n.º 7
0
        public async Task TreeViewClearAndSetAtTest()
        {
            TreeView treeView = null;

            await RunOnUIThread.ExecuteAsync(() =>
            {
                treeView = new TreeView();

                TestServices.WindowHelper.WindowContent = treeView;
            });

            await TestServices.WindowHelper.WaitForIdle();

            await RunOnUIThread.ExecuteAsync(() =>
            {
                var listControl = FindVisualChildByName(treeView, "ListControl") as TreeViewList;
                // Verify TreeViewNode::SetAt
                TreeViewNode setAtChildCheckNode = new TreeViewNode()
                {
                    Content = "Set At Child"
                };
                TreeViewNode setAtRootCheckNode = new TreeViewNode()
                {
                    Content = "Set At Root"
                };

                TreeViewNode child1 = new TreeViewNode()
                {
                    Content = "Child 1"
                };
                child1.Children.Add(new TreeViewNode()
                {
                    Content = "Child 1:1"
                });

                TreeViewNode child2 = new TreeViewNode()
                {
                    Content = "Child 2"
                };
                child2.Children.Add(new TreeViewNode()
                {
                    Content = "Child 2:1"
                });
                child2.Children.Add(new TreeViewNode()
                {
                    Content = "Child 2:2"
                });

                treeView.RootNodes.Add(child1);
                child1.IsExpanded = true;
                treeView.RootNodes.Add(child2);
                Verify.AreEqual(listControl.GetItems()?.Count(), 3);

                // SetAt node under child node which is not expanded
                child2.Children[1] = setAtChildCheckNode;
                Verify.AreEqual(listControl.GetItems()?.Count(), 3);

                // SetAt node under root node and child2 is expanded
                treeView.RootNodes[0] = setAtRootCheckNode;
                child2.IsExpanded     = true;
                Verify.AreEqual(listControl.GetItems()?.Count(), 4);

                // Verify RootNode.Clear
                treeView.RootNodes.Clear();
                Verify.AreEqual(listControl.GetItems()?.Count(), 0);

                // test clear without any child node
                treeView.RootNodes.Clear();
                Verify.AreEqual(listControl.GetItems()?.Count(), 0);
            });

            await TestServices.WindowHelper.WaitForIdle();
        }
Exemplo n.º 8
0
        public void TreeViewSelectionChangedMultipleMode()
        {
            RunOnUIThread.Execute(() =>
            {
                // input data:
                // - 1
                //   - 11
                //   - 12
                //   - 13
                // - 2
                //   - 21
                // - 3
                TreeViewSelectionChangedEventArgs selectionChangedEventArgs = null;

                var treeView = new TreeView {
                    SelectionMode = TreeViewSelectionMode.Multiple
                };
                treeView.SelectionChanged += (s, e) => selectionChangedEventArgs = e;

                var node1 = new TreeViewNode {
                    Content = "1", IsExpanded = true
                };
                var node11 = new TreeViewNode {
                    Content = "11"
                };
                var node12 = new TreeViewNode {
                    Content = "12"
                };
                var node13 = new TreeViewNode {
                    Content = "13"
                };
                node1.Children.Add(node11);
                node1.Children.Add(node12);
                node1.Children.Add(node13);

                var node2 = new TreeViewNode {
                    Content = "2", IsExpanded = true
                };
                var node21 = new TreeViewNode {
                    Content = "21"
                };
                node2.Children.Add(node21);

                var node3 = new TreeViewNode {
                    Content = "3"
                };

                treeView.RootNodes.Add(node1);
                treeView.RootNodes.Add(node2);
                treeView.RootNodes.Add(node3);
                Content = treeView;
                Content.UpdateLayout();

                var tvi1  = (TreeViewItem)treeView.ContainerFromItem(node1);
                var tvi11 = (TreeViewItem)treeView.ContainerFromItem(node11);
                var tvi12 = (TreeViewItem)treeView.ContainerFromItem(node12);
                var tvi13 = (TreeViewItem)treeView.ContainerFromItem(node13);
                var tvi2  = (TreeViewItem)treeView.ContainerFromItem(node2);
                var tvi21 = (TreeViewItem)treeView.ContainerFromItem(node21);
                var tvi3  = (TreeViewItem)treeView.ContainerFromItem(node3);

                // - 1         selected
                //   - 11      selected
                //   - 12      selected
                //   - 13      selected
                // - 2
                //   - 21
                // - 3
                tvi1.IsSelected = true;

                Verify.IsNotNull(selectionChangedEventArgs);
                Verify.AreEqual(4, selectionChangedEventArgs.AddedItems.Count);
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node1));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node11));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node12));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node13));
                Verify.AreEqual(0, selectionChangedEventArgs.RemovedItems.Count);
                selectionChangedEventArgs = null;

                // - 1         selected
                //   - 11
                //   - 12      selected
                //   - 13      selected
                // - 2
                //   - 21
                // - 3
                tvi11.IsSelected = true;
                tvi11.IsSelected = false;

                Verify.IsNotNull(selectionChangedEventArgs);
                Verify.AreEqual(0, selectionChangedEventArgs.AddedItems.Count);
                Verify.AreEqual(1, selectionChangedEventArgs.RemovedItems.Count);
                Verify.IsTrue(selectionChangedEventArgs.RemovedItems.Contains(node11));
                selectionChangedEventArgs = null;

                // - 1         selected
                //   - 11      selected
                //   - 12      selected
                //   - 13      selected
                // - 2         selected
                //   - 21      selected
                // - 3         selected
                treeView.SelectAll();
                Verify.IsNotNull(selectionChangedEventArgs);
                var items = selectionChangedEventArgs.AddedItems.ToList();
                Verify.AreEqual(7, selectionChangedEventArgs.AddedItems.Count);
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node1));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node11));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node12));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node13));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node2));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node21));
                Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node3));
                Verify.AreEqual(0, selectionChangedEventArgs.RemovedItems.Count);
            });
        }
Exemplo n.º 9
0
        public void TreeViewClearAndSetAtTest()
        {
            RunOnUIThread.Execute(() =>
            {
                var treeView = new TreeView();

                Content = treeView;
                Content.UpdateLayout();
                var listControl = FindVisualChildByName(treeView, "ListControl") as TreeViewList;
                // Verify TreeViewNode::SetAt
                TreeViewNode setAtChildCheckNode = new TreeViewNode()
                {
                    Content = "Set At Child"
                };
                TreeViewNode setAtRootCheckNode = new TreeViewNode()
                {
                    Content = "Set At Root"
                };

                TreeViewNode child1 = new TreeViewNode()
                {
                    Content = "Child 1"
                };
                child1.Children.Add(new TreeViewNode()
                {
                    Content = "Child 1:1"
                });

                TreeViewNode child2 = new TreeViewNode()
                {
                    Content = "Child 2"
                };
                child2.Children.Add(new TreeViewNode()
                {
                    Content = "Child 2:1"
                });
                child2.Children.Add(new TreeViewNode()
                {
                    Content = "Child 2:2"
                });

                treeView.RootNodes.Add(child1);
                child1.IsExpanded = true;
                treeView.RootNodes.Add(child2);
                Verify.AreEqual(listControl.Items.Count, 3);

                // SetAt node under child node which is not expanded
                child2.Children[1] = setAtChildCheckNode;
                Verify.AreEqual(listControl.Items.Count, 3);

                // SetAt node under root node and child2 is expanded
                treeView.RootNodes[0] = setAtRootCheckNode;
                child2.IsExpanded     = true;
                Verify.AreEqual(listControl.Items.Count, 4);

                // Verify RootNode.Clear
                treeView.RootNodes.Clear();
                Verify.AreEqual(listControl.Items.Count, 0);

                // test clear without any child node
                treeView.RootNodes.Clear();
                Verify.AreEqual(listControl.Items.Count, 0);
            });
        }
Exemplo n.º 10
0
        public static async Task <TreeViewNode> GetChildNodeAsync(this TreeViewNode Node, PathAnalysis Analysis, bool DoNotExpandNodeWhenSearching = false)
        {
            if (Node == null)
            {
                throw new ArgumentNullException(nameof(Node), "Argument could not be null");
            }

            if (Analysis == null)
            {
                throw new ArgumentNullException(nameof(Node), "Argument could not be null");
            }

            if (Node.HasUnrealizedChildren && !Node.IsExpanded && !DoNotExpandNodeWhenSearching)
            {
                Node.IsExpanded = true;
            }

            string NextPathLevel = Analysis.NextFullPath();

            if (NextPathLevel == Analysis.FullPath)
            {
                if ((Node.Content as TreeViewNodeContent).Path.Equals(NextPathLevel, StringComparison.OrdinalIgnoreCase))
                {
                    return(Node);
                }
                else
                {
                    if (DoNotExpandNodeWhenSearching)
                    {
                        if (Node.Children.FirstOrDefault((SubNode) => (SubNode.Content as TreeViewNodeContent).Path.Equals(NextPathLevel, StringComparison.OrdinalIgnoreCase)) is TreeViewNode TargetNode)
                        {
                            return(TargetNode);
                        }
                        else
                        {
                            return(null);
                        }
                    }
                    else
                    {
                        for (int i = 0; i < 10; i++)
                        {
                            if (Node.Children.FirstOrDefault((SubNode) => (SubNode.Content as TreeViewNodeContent).Path.Equals(NextPathLevel, StringComparison.OrdinalIgnoreCase)) is TreeViewNode TargetNode)
                            {
                                return(TargetNode);
                            }
                            else
                            {
                                await Task.Delay(300).ConfigureAwait(true);
                            }
                        }

                        return(null);
                    }
                }
            }
            else
            {
                if ((Node.Content as TreeViewNodeContent).Path.Equals(NextPathLevel, StringComparison.OrdinalIgnoreCase))
                {
                    return(await GetChildNodeAsync(Node, Analysis, DoNotExpandNodeWhenSearching).ConfigureAwait(true));
                }
                else
                {
                    if (DoNotExpandNodeWhenSearching)
                    {
                        if (Node.Children.FirstOrDefault((SubNode) => (SubNode.Content as TreeViewNodeContent).Path.Equals(NextPathLevel, StringComparison.OrdinalIgnoreCase)) is TreeViewNode TargetNode)
                        {
                            return(await GetChildNodeAsync(TargetNode, Analysis, DoNotExpandNodeWhenSearching).ConfigureAwait(true));
                        }
                        else
                        {
                            return(null);
                        }
                    }
                    else
                    {
                        for (int i = 0; i < 10; i++)
                        {
                            if (Node.Children.FirstOrDefault((SubNode) => (SubNode.Content as TreeViewNodeContent).Path.Equals(NextPathLevel, StringComparison.OrdinalIgnoreCase)) is TreeViewNode TargetNode)
                            {
                                return(await GetChildNodeAsync(TargetNode, Analysis, DoNotExpandNodeWhenSearching).ConfigureAwait(true));
                            }
                            else
                            {
                                await Task.Delay(300).ConfigureAwait(true);
                            }
                        }

                        return(null);
                    }
                }
            }
        }