internal void NavigateDown()
        {
            if (Direction == TreeViewNavigationDirection.Up)
            {
                Direction = TreeViewNavigationDirection.Down;
                ShouldNavigationSelect = !ShouldNavigationSelect;
            }

            TreeViewItem lastSelectedItem = CurrentNavigationItem;
            var          next             = lastSelectedItem.GetNext();

            if (next == null)
            {
                return;
            }

            if (next != Origin)
            {
                if (ShouldNavigationSelect)
                {
                    SelectionManager.SelectItem(next);
                }
                else
                {
                    SelectionManager.UnselectItem(lastSelectedItem);
                }
            }
            else
            {
                SelectionManager.UnselectItem(lastSelectedItem);
                ShouldNavigationSelect = !ShouldNavigationSelect;
            }

            CurrentNavigationItem = next;
            CurrentNavigationItem.Focus();
        }
        internal void NavigateUp()
        {
            if (Direction == TreeViewNavigationDirection.Down)
            {
                Direction = TreeViewNavigationDirection.Up;
                ShouldNavigationSelect = !ShouldNavigationSelect;
            }

            TreeViewItem lastSelectedItem = CurrentNavigationItem;
            var          previous         = lastSelectedItem.GetPrevious();

            if (previous == null)
            {
                return;
            }

            if (previous != Origin)
            {
                if (ShouldNavigationSelect)
                {
                    SelectionManager.SelectItem(previous);
                }
                else
                {
                    SelectionManager.UnselectItem(lastSelectedItem);
                }
            }
            else
            {
                SelectionManager.UnselectItem(lastSelectedItem);
                ShouldNavigationSelect = !ShouldNavigationSelect;
            }

            CurrentNavigationItem = previous;
            CurrentNavigationItem.Focus();
        }