WPF中的树视图级别?

WinForms应用程序中, treeview的级别由node.level给出
WPF中的相应命令是什么?

您的问题的直接答案是WPF中没有级别属性。

winforms控件和wpf控件之间没有一对一的关系。 因为两者的底层架构和用法完全不同。 在WPF中,您将一个层次结构数据(LinkedList类型的Datastructure)绑定到TreeView,并将HeirarchicalDataTemplate定义为Treeview.ItemTemplate属性

鉴于这个问题: –

所以当我点击一个节点时,我怎么知道它是哪个级别? 有解决方法吗?

这是一个可能的解决方法: –

如果您在Visual Tree中引用了一个Control,可能来自Click事件,那么您可以使用该控件通过调用这样的函数来计算它在树视图中的哪个级别,我在过去使用过。

 private int FindTreeLevel(DependencyObject control) { var level = -1; if (control != null) { var parent = VisualTreeHelper.GetParent(control); while (!(parent is TreeView) && (parent != null)) { if (parent is TreeViewItem) level++; parent = VisualTreeHelper.GetParent(parent); } } return level; } 

此方法将向上移动VisualTree并计算它在找到TreeViewItem控件之前停止之前找到的TreeView控件的数量。

如果您需要在XAML中使用它,例如, HierarchicalDataTemplateDataTrigger ,那么您可以将其打包到IValueConverter类中

    ...   ...         

然后使用以下转换器

  public class TreeLevelConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var level = -1; if (value is DependencyObject ) { var parent = VisualTreeHelper.GetParent(value as DependencyObject ); while (!(parent is TreeView) && (parent != null)) { if (parent is TreeViewItem) level++; parent = VisualTreeHelper.GetParent(parent); } } return level; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new System.NotImplementedException(); } }