2013-10-30 88 views
0

我正在使用Silverlight TreeView。當控制加載時,所有節點都關閉。當我點擊我需要的節點之一全部子節點在那個打開的父節點下展開。我該怎麼做呢?我使用TreeView的經驗非常有限,所以示例代碼真的可以幫助很多。謝謝!Silverlight TreeView展開頂級節點下的所有節點

回答

0

將一個處理程序附加到每個TreeViewItem的事件Expanded事件中。然後遍歷子樹,隨時擴展每個節點。

簡單XAML:

 <sdk:TreeView> 
     <sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="One"></sdk:TreeViewItem> 
     <sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Two"> 
      <sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Three"> 
       <sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Four"> 
        <sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Five" /> 
       </sdk:TreeViewItem> 
      </sdk:TreeViewItem> 
     </sdk:TreeViewItem> 
    </sdk:TreeView> 

後面的代碼:

private void TreeViewItem_OnExpanded(object sender, RoutedEventArgs e) 
    { 
     TreeViewItem tvi = sender as TreeViewItem; 
     Debug.Assert(tvi != null); 

     if (tvi.HasItems) { ExpandChildren(tvi); } 
    } 

    private void ExpandChildren(TreeViewItem tvi) 
    { 
     foreach (var item in tvi.Items) 
     { 
      if (item is TreeViewItem) { ExpandChildren(item as TreeViewItem); } 
     } 
     tvi.IsExpanded = true; 
    } 

我不知道如何建立一個TreeView.ItemTemplate事件處理程序,但是。
也許另一位讀者知道該怎麼做......?

相關問題