如何以编程方式展开和折叠 WinRTXamlToolkit 树视图



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

我的观点

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

树视图页视图模型上的数据绑定:

 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;
    }

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

要使用ContainerFromItem方法通过绑定到TreeView的项来获取TreeViewItem,在您的代码片段中应该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,它正在使用TreeViewNode设置Expand属性。同样在预览体验版中,UWP 应用提供TreeView控件。

最新更新