【发布时间】:2015-05-14 08:01:55
【问题描述】:
我知道使用 WPF 在 C# 中编程与传统的 C# 程序不同,因此大多数在线资料都没有说明我需要什么。
我的 WPF 窗口中有一个 TreeView 控件,其中有父节点和子节点。我想将它们存储在节点类型(id、名称、父级)的列表中。
我使用这个获得了所选项目/节点的名称:
private void TreeViewItem_OnItemSelected(object sender, RoutedEventArgs e)
{
TreeViewItem item = treeView.SelectedItem as TreeViewItem;
nameTxt.Text = item.Header.ToString();
}
我尝试在子节点之前使用它获取父节点:
TreeViewItem item = treeView.SelectedItem as TreeViewItem;
nameTxt.Text = item.Parent.ToString();
但是,这会返回根父级 (A) 而不是子级的父级(即 2)。
我应该进行哪些更改才能获得孩子的直接父母而不是根父母? :)
编辑:这是 XAML
<TreeView Name="treeView" HorizontalAlignment="Left" Height="564" Margin="10,68,0,0" VerticalAlignment="Top" Width="363">
<TreeViewItem TreeViewItem.Selected="TreeViewItem_OnItemSelected" Header="A" IsExpanded="True" Height="554" FontSize="18">
<TreeViewItem Header="1" />
<TreeViewItem Header="2" />
</TreeViewItem>
</TreeView>
【问题讨论】:
-
这很不寻常,它是由 Parent 属性返回的节点的父节点。您能否显示您提供的代码的扩展版本,也许问题出在其他地方
-
当
item.Parent返回A时,SelectedItem是什么? -
@Chris 这是完整的代码,伙计。我只是将所选项目和父项打印到文本框。它只是继续映射到 A 的根节点。但是,选定的项目显示当前选定的项目,只是父节点继续映射到根节点而不是之前的父节点
-
@SriramSakthivel 参考上面的评论,好先生! :)
-
您的 Xaml 没有反映您在图像中显示的 UI,您只有两个父节点为
A,因此您得到A。我也无法重现该问题。发布完整代码以重现问题以获得帮助。顺便说一句,我建议您使用数据绑定而不是参考this。