我从我的SQL Database
中提取数据,该TreeView
显示TreeItems
中该数据库中的所有表格。我现在停留在下一位,当我点击树视图中的一个表名时,该表中的所有列名都显示为TreeViewItem treeItem = null;
treeItem = new TreeViewItem();
treeItem.Header = "Standards";
treeItem.Tag = "Branch";
foreach (Standards Standard in _Standards)
{
TreeViewItem createdTV;
createdTV = new TreeViewItem() { Header = Standard.Table_name };
treeItem.Items.Add(createdTV);
}
ToDoList.Items.Add(treeItem);
。
这是一个例子。
这些是我的数据库表:
因此,当我运行我的代码时,一切正常并将表格拉到我的TreeView:
我使用此代码执行此操作;
public List<StandardDefinition> GetStandardFields(string _selectedStandard)
{
_SP = new StoredProcedures(_connection);
return _SP.GetColumnHeaders(_selectedStandard).ToList();
}
当我尝试从TreeView中单击其中一个表时出现问题,我想获取该表中的所有列并在所选表下显示为TreeView项。
我已经编写了我的SP以获取所有列:
(I only want it to find the SelectedItem when you click a Table name under standards, not when you click any TreeView item.)
我只需要在树视图{{1}}
中找到SelectedItem答案 0 :(得分:1)
您需要将一个SelectedItemChanged事件添加到TreeView控件,然后在那里您可以获取所选项目并检查它是否是Standards项目的子项,如下所示:
private void ToDoList_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
TreeViewItem selItem = ((TreeViewItem)ToDoList.SelectedItem);
//If the parent is a treeviewitem, this is a child node.
if (selItem.Parent is TreeViewItem)
{
//Check if the parent treeviewitem is the standards node.
if (((TreeViewItem)selItem.Parent).Header.ToString() == "Standards")
{
//Do stuff here.
}
}
}