如何以编程方式展开和折叠WinRTXamlToolkit Treeview?

时间:2018-03-14 08:55:09

标签: uwp treeview winrt-xaml-toolkit

有人可以指导我如何以编程方式展开和折叠树和子树吗? 我目前不使用名为IsExpand的属性。

我的观点

<controls:TreeView ItemTemplate="{StaticResource TreeviewDataTemplate}"
                                   ItemsSource="{Binding TreeItems}" Style="{StaticResource TouchTreeViewStyle}"
                                   HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" ScrollViewer.VerticalScrollBarVisibility="Disabled"/>

TreeViewpageViewModel上的数据绑定:

 private void BuildTree()
        {
            var tree = BuildChildrenTree(_fullAgendaItems.Where(a => a.PreviousId == null).ToList());
            TreeItems = tree;
        }

private ObservableCollection<AgendaItem> BuildChildrenTree(List<AgendaItem> agendaItems)
    {
        var tree = new ObservableCollection<AgendaItem>();
        const string functionName = "BuildChildrenTree";
        try
        {
            //Logs.Write.Entry(ClassName + functionName);
            foreach (var item in agendaItems)
            {
                item.Children =
                    BuildChildrenTree(
                        FullAgendaItems.Where(a => a.PreviousId == item.Id && item.HeadorPaper == 0).ToList());// 

                #region Change bg color of the currently seleted item

                if (_globalSelectedAgendaItem != null && _globalSelectedAgendaItem.Id == item.Id)
                {
                    item.AgendaItemDefaultBg = SelectedColor;
                }

                #endregion

                tree.Add(item);
            }
            //Logs.Write.Success(ClassName + functionName);
        }
        catch (Exception ex)
        {
            Logs.Write.Error(Utility.FmtErrData(ClassName + functionName, ex));
        }
        return tree;
    }

1 个答案:

答案 0 :(得分:0)

对于TreeView中的WinRTXamlToolkitTreeView中的每个TreeViewItem都有IsExpand属性。您可以获取要展开或折叠代码的TreeViewItem,并为其设置IsExpand属性。

要使用ContainerFromItem方法通过绑定到TreeViewItem的项目获取TreeView,您的代码段应为AgendaItem

假设您的TreeViewtvDataBound命名,以下代码段将展开第一项。

private void BtnExpand_Click(object sender, RoutedEventArgs e)
{
    TreeViewItem item = (TreeViewItem)tvDataBound.ContainerFromItem(tvDataBound.Items[0]);
    if (!item.IsExpanded)
    {
        item.IsExpanded = true;
    } 
}

顺便提一下,官方示例提供了TreeView您也可以参考,它正在设置Expand属性TreeViewNode。此外,在内部预览中,UWP应用程序提供TreeView控件。