我有一个具有多个级别的TreeView。我想将顶级项目分配为“父项”,以便在单击它们时可以看到set属性并更改在TabControl中选择的选项卡。
到目前为止,我能看到的唯一有用的设置是Uid
,有没有办法为TreeViewItems添加额外的属性?我在考虑何时使用Javascript和CSS,以及如何向任何元素添加额外的data
标签,并且不确定是否可以在C#中做到这一点
var serverGroupList = ServerDB.ExecuteDB("SELECT * FROM server_groups");
var json = JsonConvert.SerializeObject(serverGroupList);
dynamic dynJson = JsonConvert.DeserializeObject(json);
foreach (var item in dynJson)
{
Console.WriteLine("Adding ServerGroup: " + item.name);
ComboboxItem DropdownItem = new ComboboxItem();
DropdownItem.Text = item.name.ToString();
DropdownItem.Value = item.id;
ServerGroupDropdown.Items.Add(DropdownItem);
treeItem = new TreeViewItem();
treeItem.Header = item.name;
treeItem.Uid = item.id;
var serverListResults = ServerDB.ExecuteDB("SELECT * FROM servers WHERE group_id = " + item.id);
var serversJSON = JsonConvert.SerializeObject(serverListResults);
dynamic servers = JsonConvert.DeserializeObject(serversJSON);
foreach (var server in servers)
{
Console.WriteLine("Adding: " + server.name);
treeItem.Items.Add(new TreeViewItem() { Header = server.name, Uid = server.id });
}
ServerList.Items.Add(treeItem);
}
答案 0 :(得分:0)
wpf TreeView不仅可以显示每个项目的文本标题,还可以做更多的事情。请研究此CodeProject文章以获取概述:Basic Understanding of Tree View in WPF。使用绑定和模板时,无需在后面的代码中创建TreeViewItem(所有必要的属性都存储在数据项中。TreeView为每个数据项自动生成TreeViewItems,并且数据项与TreeViewItem.DataContext之间存在1:1的关系)< / p>
仍然要继续您当前的方法,请将所有其他数据存储在DataContext
属性中:
treeItem = new TreeViewItem();
treeItem.Header = item.name;
treeItem.Uid = item.id;
treeItem.DataContext = item;
和
treeItem.Items.Add(new TreeViewItem { Header = server.name, Uid = server.id, DataContext = server });