代码之家  ›  专栏  ›  技术社区  ›  Ben

TreeView的选定项

  •  0
  • Ben  · 技术社区  · 10 年前

    我正在从我的 SQL Database 它正在显示该数据库中的所有表 TreeView 。我现在被困在下一位,即当我单击树视图中的一个表名时,该表中的所有列名都显示为 TreeItems .

    这里有一个例子。

    以下是我的数据库表:

    enter image description here

    因此,当我运行代码时,所有的工作都很好,并将表格拉到TreeView中:

    enter image description here

    我是用这个代码做的;

    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中的一个表时,问题就出现了,我想获取该表中的所有列,并在所选表下显示为TreeView项。

    我已编写SP以获取所有列:

    public List<StandardDefinition> GetStandardFields(string _selectedStandard)
    {
        _SP = new StoredProcedures(_connection);
    
        return _SP.GetColumnHeaders(_selectedStandard).ToList();
    } 
    

    我只需要在树视图中找到SelectedItem (I only want it to find the SelectedItem when you click a Table name under standards, not when you click any TreeView item.)

    1 回复  |  直到 10 年前
        1
  •  1
  •   Chris_L    10 年前

    您需要将SelectedItemChanged事件添加到TreeView控件中,在那里您可以获取所选项并检查它是否是标准项的子项,如下所示:

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