WPF TreeView Прокручивается к низу автоматически? - PullRequest
0 голосов
/ 30 июня 2011

WPF по умолчанию TreeView прокручивается до нижней части узла автоматически, где нам нужно показать вид сверху в виде дерева.Как это сделать?

Также я не смог получить просмотрщик прокрутки, спускаясь по дереву визуалов.

Ответы [ 2 ]

1 голос
/ 23 марта 2012

Этот код очень грубый.Ключом к получению TreeViewItem.BringIntoView (), чтобы получить элемент наверх, является сначала прокрутка TreeView вниз, а не вверх.Для этого нам сначала нужно получить доступ к ScrollViewer внутри шаблона элемента управления TreeView.Много беспорядка вокруг IMO, который должен был быть предоставлен в рамках с самого начала.

В этом случае ваш элемент управления должен быть вашим TreeViewItem, который вы пытаетесь достичь наверх.Элементом управления uxTree является TreeView.

item.IsSelected = true;
ScrollViewer scroller = (ScrollViewer)this.FindVisualChildElement(this.uxTree, typeof(ScrollViewer));
scroller.ScrollToBottom();
item.BringIntoView();

private FrameworkElement FindVisualChildElement(DependencyObject element, Type childType)
{
    int count = VisualTreeHelper.GetChildrenCount(element);

    for (int i = 0; i < count; i++)
    {
        var dependencyObject = VisualTreeHelper.GetChild(element, i);
        var fe = (FrameworkElement)dependencyObject;

        if (fe.GetType() == childType)
        {
            return fe;
        }

        FrameworkElement ret = null;

        if (fe.GetType().Equals(typeof(ScrollViewer)))
        {
            ret = FindVisualChildElement((fe as ScrollViewer).Content as FrameworkElement, childType);
        }
        else
        {
            ret = FindVisualChildElement(fe, childType);
        }

        if (ret != null)
        {
            return ret;
        }
    }

    return null;
}
0 голосов
/ 01 июля 2011

Предварительный выбор верхнего узла и вызов метода TreeViewItem.BringIntoView при изменении события выбора. Вызовите TreeView.ItemContainerGenerator.ContainerFromItem (e.NewValue), чтобы получить доступ к TreeViewItem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...