WPF 树视图展开操作
Posted
技术标签:
【中文标题】WPF 树视图展开操作【英文标题】:WPF Treeview Expand Action 【发布时间】:2021-01-28 05:15:39 【问题描述】: 我试图在树视图的每个项目中添加一个按钮。单击按钮时: - 如果有所选父项的某些项目,则展开树 - 如果不是父母:做一个动作。 双重动作将允许我完全删除切换按钮。 所以这就是我到目前为止发现的: <TreeView>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="Binding Items" >
<Button Content ="Binding Title" Click="OnItemClick"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我的下一步是更改树视图的样式,以便只有一个按钮可以完成所有工作。因此,取决于它是否是某物的父项,按钮将展开新项目或将在代码中执行操作。
public void OnItemClick(object sender, RoutedEventArgs args)
FrameworkElement parent = (FrameworkElement)((Button)sender).Parent;
if (parent is TreeViewItem)
//ACTION
else
//EXPAND
Console.WriteLine(parent);
所以当我得到按钮的父元素时,我想检查父按钮(treeitemview)是否可扩展。但是现在我得到的父母总是空的。 所以阻塞步骤是:
有没有办法获取按钮的父级类型(treeitemview)并检查它是否可扩展?谢谢
【问题讨论】:
【参考方案1】:您可以使用以下辅助方法在可视化树中找到父 TreeViewItem
:
private static T FindParent<T>(DependencyObject dependencyObject) where T : DependencyObject
var parent = VisualTreeHelper.GetParent(dependencyObject);
if (parent == null)
return null;
var parentT = parent as T;
return parentT ?? FindParent<T>(parent);
用法:
TreeViewItem parent = FindParent<TreeViewItem>((Button)sender);
if (parent != null)
//ACTION
【讨论】:
一个非常好的解决方案,非常干净。 PS:如果有人问....父对象将返回“可能”父对象中的项目数。通过这种方式,您将扩展或不扩展父树视图。谢谢以上是关于WPF 树视图展开操作的主要内容,如果未能解决你的问题,请参考以下文章