【发布时间】:2013-12-22 19:34:12
【问题描述】:
我为文件夹导航系统创建了以下树视图:
看起来像:
我的代码:
string[] RootFolders = Directory.GetDirectories(txtRootDirectory.Text.Trim());
foreach (string dir0 in RootFolders)
{
if (dir0.Contains("_In"))
{
TreeViewItem path = new TreeViewItem() { Header = new DirectoryInfo(dir0).Name };
string[] MainFolder = Directory.GetDirectories(dir0);
foreach(string dir1 in MainFolder)
{
TreeViewItem path1 = new TreeViewItem() { Header = new DirectoryInfo(dir1).Name };
path.Items.Add(path1);
string[] SubFolder = Directory.GetDirectories(dir1);
foreach (string dir2 in SubFolder)
{
TreeViewItem path2 = new TreeViewItem() { Header = new DirectoryInfo(dir2).Name };
path1.Items.Add(path2);
}
}
tree.Items.Add(path);
}
}
我需要的是能够获得序列中最后一个子节点的所有父文件夹的名称,并将它们连接在一起形成一个目录。例如,如果选择了“ascx Staging Application”树项,我需要返回“ascx Staging Application”、“Web 应用程序”、“_In Development”,以便创建一个用于打开此文件的字符串。 (即“c:_In Development\Web Applications\ascx Staging Application.sln”)
到目前为止我所能想到的就是这个,从这里开始一切似乎都崩溃了......
private void tree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
TreeViewItem trvItem = (TreeViewItem)tree.SelectedItem;
if (trvItem != null)
{
TreeViewItem trvParent = (TreeViewItem)trvItem.Parent;
MessageBox.Show(trvParent.Header.ToString());
}
}
【问题讨论】: