WPF中的AutoExpand树视图
有没有一种方法可以从WPF中的树视图自动扩展所有节点? 我进行了搜索,甚至在treeview属性中都没有找到扩展功能。
谢谢
5个解决方案
68 votes
您可以设置ItemContainerStyle并使用IsExpanded属性。
如果需要通过代码执行此操作,则可以为树视图项目编写viewmodel,并将IsExpanded属性绑定到模型中的相应属性。 有关更多示例,请参见Josh Smith在CodeProject上的精彩文章:使用ViewModel模式简化WPF TreeView
Anvaka answered 2020-07-28T20:38:13Z
5 votes
这是我用的:
private void ExpandAllNodes(TreeViewItem rootItem)
{
foreach (object item in rootItem.Items)
{
TreeViewItem treeItem = (TreeViewItem)item;
if (treeItem != null)
{
ExpandAllNodes(treeItem);
treeItem.IsExpanded = true;
}
}
}
为了使其正常工作,必须在根节点的foreach循环中调用此方法:
// this loop expands all nodes
foreach (object item in myTreeView.Items)
{
TreeViewItem treeItem = (TreeViewItem)item;
if (treeItem != null)
{
ExpandAllNodes(treeItem);
treeItem.IsExpanded = true;
}
}
Carlo answered 2020-07-28T20:38:37Z
2 votes
卡洛的答案更好,因为它可以打开所有级别
这通过简单一些的代码示例对该示例进行了改进。
private void ExpandAllNodes(TreeViewItem treeItem)
{
treeItem.IsExpanded = true;
foreach (var childItem in treeItem.Items.OfType())
{
ExpandAllNodes(childItem);
}
}
使用此行代码调用它
TreeViewInstance.Items.OfType().ToList().ForEach(ExpandAllNodes);
jwize answered 2020-07-28T20:39:05Z
2 votes
如果您想手动展开,可以尝试
Xaml:
C#:
bool Expanded = false;
// The event subscription method (for a button click)
private void ButtonExpand__Click(object sender, RoutedEventArgs e)
{
Expanded = !Expanded;
Style Style = new Style
{
TargetType = typeof(TreeViewItem)
};
Style.Setters.Add(new Setter(TreeViewItem.IsExpandedProperty, Expanded));
TreePeople.ItemContainerStyle = Style;
}
Darío Andrés Muñoz Prudant answered 2020-07-28T20:39:34Z
0 votes
操纵树项完全展开的另一种编程方式(可能是通过c#代码)是在根节点上使用TreeViewItem.ExpandSubTree()命令。
private void ExpandFirstRootNode()
{
TreeViewControl.Items[0].ExpandSubtree();
}
gmmarcilli answered 2020-07-28T20:39:54Z