2014-04-02 100 views
0

我從我的SQL Database中提取數據,該數據顯示TreeView中該數據庫中的所有表。我現在停留在下一個位置,即當我單擊樹視圖中的某個表名時,該表中的所有列名顯示爲TreeItemsTreeView的選定項目

這裏是一個例子。

這是我的數據庫表:

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的,我想所有在該表而顯示爲樹視圖項列的選擇表下。

我寫我的SP拿到的所有列:

public List<StandardDefinition> GetStandardFields(string _selectedStandard) 
{ 
    _SP = new StoredProcedures(_connection); 

    return _SP.GetColumnHeaders(_selectedStandard).ToList(); 
} 

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

+1

[TreeView.SelectedItemChange d Event](http://msdn.microsoft.com/en-us/library/system.windows.controls.treeview.selecteditemchanged(v = vs.110).aspx)我建議將綁定與HierarchicalDataTemplate結合使用。 –

回答

1

你需要一個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. 
     } 
    } 
} 
+0

感謝您的答案幫助很多! – Ben