有人可以指导我如何以编程方式展开和折叠树和子树吗? 我目前不使用名为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;
}
答案 0 :(得分:0)
对于TreeView
中的WinRTXamlToolkit
,TreeView
中的每个TreeViewItem
都有IsExpand
属性。您可以获取要展开或折叠代码的TreeViewItem
,并为其设置IsExpand
属性。
要使用ContainerFromItem
方法通过绑定到TreeViewItem
的项目获取TreeView
,您的代码段应为AgendaItem
。
假设您的TreeView
以tvDataBound
命名,以下代码段将展开第一项。
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
控件。