gpt4 book ai didi

c# - 获取 TreeView 中所选项目的 TreeViewItem

转载 作者:可可西里 更新时间:2023-11-01 08:03:35 25 4
gpt4 key购买 nike

我有一个绑定(bind)到具有父子关系的数据集的 TreeView。我将如何从 TreeView 中获取选定的 TreeViewItem?请帮我。我的代码如下。

xaml:-

<TreeView Name="tvPersonal"  Background="Transparent"  ItemsSource="{Binding RootNodes}" SelectedItemChanged="tvPersonal_SelectedItemChanged">    
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding rsParentChild}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>

 public MainWindow()   

{
InitializeComponent();
DataSet ds = new BL.BLMenu().GetAllMenues(new BOModule { Name = Modules.Personnel });
ds.Tables[0].TableName = "Menu";
DataRelation relation = new DataRelation("rsParentChild",
ds.Tables["Menu"].Columns["MenuId"],
ds.Tables["Menu"].Columns["ParentId"]);
relation.Nested = true;
ds.Relations.Add(relation);
BOMenu mnu = new BOMenu();
BOMenu.RootNodes = ds.Tables["Menu"].DefaultView;
BOMenu.RootNodes.RowFilter = "ParentId IS NULL";

this.DataContext = this;
stbiDate.Content = DateTime.Now;

}
public DataView RootNodes
{
get { return BOMenu.RootNodes; }
}

BOMenu 类:-

 public class BOMenu
{
public string MenuId
{
get;
set;
}

public string Name
{
get;
set;
}

public string ParentId
{
get;
set;
}

public int Priority
{
get;
set;
}

public static DataView RootNodes
{
get;
set;
}

}

最佳答案

虽然 biju 的答案适用于平面层次结构,但我不得不寻找 HierarchicalDataTemplates 的解决方案。这是对我有用的扩展方法:

public static TreeViewItem ContainerFromItemRecursive(this ItemContainerGenerator root, object item)
{
var treeViewItem = root.ContainerFromItem(item) as TreeViewItem;
if (treeViewItem != null)
return treeViewItem;
foreach (var subItem in root.Items)
{
treeViewItem = root.ContainerFromItem(subItem) as TreeViewItem;
var search = treeViewItem?.ItemContainerGenerator.ContainerFromItemRecursive(item);
if (search != null)
return search;
}
return null;
}

你可以使用它

TreeViewItem tvi = treeView
.ItemContainerGenerator
.ContainerFromItemRecursive(treeView.SelectedItem);

关于c# - 获取 TreeView 中所选项目的 TreeViewItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5218364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com