UWP WinUI TreeView可编程滚动至项目

UWP WinUI TreeView可编程滚动至项目,uwp,winui,Uwp,Winui,我正在尝试使用新的WinUItoolkitTreeView控件。我需要以编程方式滚动到特定项目 我找不到这样做的方法。目前,TreeView类中没有用于滚动查看的api。但是您可以在TreeViewControlTemplate中获得TreeView列表。它基于ListViewBase,包含ScrollIntoView方法。要获取TreeView列表,可以使用VisualTreeHelper类 public static DependencyObject FindChildByName(Depe

我正在尝试使用新的
WinUI
toolkit
TreeView
控件。我需要以编程方式滚动到特定项目


我找不到这样做的方法。

目前,
TreeView
类中没有用于滚动查看的api。但是您可以在TreeView
ControlTemplate
中获得
TreeView列表
。它基于
ListViewBase
,包含
ScrollIntoView
方法。要获取
TreeView列表
,可以使用
VisualTreeHelper

public static DependencyObject FindChildByName(DependencyObject parant, string  ControlName)
{
    int count = VisualTreeHelper.GetChildrenCount(parant);

    for (int i = 0; i < count; i++)
    {
        var MyChild = VisualTreeHelper.GetChild(parant, i);
        if (MyChild is FrameworkElement && ((FrameworkElement)MyChild).Name == ControlName)
            return MyChild;

        var FindResult = FindChildByName(MyChild, ControlName);
        if (FindResult != null)
            return FindResult;
    }
    return null;
}
<TreeViewList x:Name="ListControl" AllowDrop="False" 
              CanReorderItems="False" 
              CanDragItems="False" 
              ItemContainerStyle="{StaticResource TreeViewItemStyle}" 
              ItemTemplate="{StaticResource CultureItemDataTemplate}">
    <TreeViewList.ItemContainerTransitions>
        <TransitionCollection>
            <ContentThemeTransition/>
            <ReorderThemeTransition/>
            <EntranceThemeTransition IsStaggeringEnabled="False"/>
        </TransitionCollection>
    </TreeViewList.ItemContainerTransitions> 
</TreeViewList>
private void Button_Click(object sender, RoutedEventArgs e)
{
    var listControl = FindChildByName(treeView1, "ListControl") as ListViewBase;
    listControl.ScrollIntoView(treeView1.RootNodes.LastOrDefault());
}