TreeView的选定项目

时间:2014-04-02 12:57:44

标签: c# sql wpf treeview treeviewitem

我从我的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);

这是一个例子。

这些是我的数据库表:

enter image description here

因此,当我运行我的代码时,一切正常并将表格拉到我的TreeView:

enter image description here

我使用此代码执行此操作;

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

1 个答案:

答案 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.
        }
    }
}