c# - 在 WPF TreeView 中获取 FullPath?

标签 c# wpf

如果我以编程方式创建 WPF TreeView,例如:

// TreeView treeView; <- added in the designer
TreeViewItem rootNode = new TreeViewItem();
rootNode.Header = "RootNode"
treeView.Items.Add(rootNode);

TreeViewItem subNode1 = new TreeViewItem();
subNode1.Header = "SubNode1";
rootNode.Items.Add(subNode1);

TreeViewItem subNode2 = new TreeViewItem();
subNode2.Header = "SubNode2";
rootNode.Items.Add(subNode2);

但是,我想获取 TreeView 中某个节点的路径,就像 System.Windows.Forms.TreeNode 类中的 FullPath 属性一样。所以 subNode2 的路径将是 RootNode//SubNode2。我该怎么做?

编辑:我不是在寻找手动解决方案,但我想知道是否有类似 FullPath 的等效访问器,或者我是否打算以错误的方式使用 WPF TreeView 类。例如。我查看了 DisplayMemberPathSelectedValuePath,但它们似乎没有提供我想要的结果。

最佳答案

在这里看看我的回答:

Silverlight: Determine parent TreeViewItem?

确定路径然后很简单:

public string GetFullPath(TreeViewItem node) 
{
  if (node == null)
    throw new ArgumentNullException();

  var result = Convert.ToString(node.Header);

  for (var i = GetParentItem(node); i != null; i = GetParentItem(i))
    result = i.Header + "\\" + result;

  return result;
}

关于c# - 在 WPF TreeView 中获取 FullPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4309827/

相关文章:

c# - 具有 C#8 默认接口(interface)实现/特征的事件继承

c# - 在使用 MVVM 的 WPF 中,谁负责管理外部通信?

c# - 是否有包含 Location HTTP header 名称的标准 .NET 枚举?

c# - 要求对 OWIN 应用程序的所有请求进行身份验证

c# - 虽然循环无法按预期从列表中随机选择新字符串

c# - 如何使用MVVM以编程方式更改ComboBox SelectedValue

c# - 如何从运行 .NET 4.7.2 的 WPF 访问 gRPC 服务?

c# - 将 WPF 应用程序转换为 MVVM 时必须知道的事情的一般 list

c# - 在没有启动的情况下在旧的 ASP.NET MVC 应用程序中创建 HttpClient

c# - 防止C#中的重复字符串