2009-11-07 27 views
1

我有以下XAML:樹型視圖沒有顯示出其膨脹機控制

<TreeView> 
    <TreeViewItem ItemsSource={Binding} Header="TopMost" IsExpanded="True"> 
     <TreeViewItem.ItemTemplate> 
     <DataTemplate> 
      <TreeViewItem> 
       <TreeViewItem.Header> 
       <TextBlock Text="{Binding SubTopic}"/> 
       <TreeViewItem.Header> 
       <!-- further data representation --> 
      </TreeViewItem> 
     </DataTemplate> 
     </TreeViewItem.ItemTemplate> 
    </TreeViewItem> 
    <TreeViewItem> 
    </TreeViewItem> 
</TreeView> 

第一樹型視圖並展開,顯示其子,但應該是在文本的左側可見選擇最頂層是不存在的。我可以通過雙擊TopMost標題讓主TreeViewItem的子項合攏和展開。我該如何解決這個問題?

回答

4

您的XAML在默認的WPF項目中工作正常(除了錯字(我將第二個< TreeViewItem.Header>更改爲< /TreeViewItem.Header>)。當我運行它時,我看到單詞「TopMost」旁邊的選擇器(小三角形),並且它正常工作。

我想:看到

  • 看,如果你已經覆蓋了樹型視圖或在任何一點的風格樹視圖。
  • 在運行時探索生成的可視化樹(使用VS.NET調試器或像Mole這樣的工具),查看在Visual樹中是否存在ToggleButton作爲網格的第一個子節點。 (TreeViewItem的默認模板使用ToggleButton而不是擴展器)
  • 嘗試單獨與一個孩子查看它是否有效。如果確實如此,則逐步改變兩者,直到找到問題。

注意

有沒有法律規定說,你不能用裏面的DataTemplates喜歡自己正在做TreeViewItems,而是因爲它違背了< TreeView控件的目的>它通常不是一個好主意,這是爲多個TreeViewItems提供選擇,焦點和可訪問性支持。

你會發現:

  1. 您的TreeView不跟蹤,除了在頂級所選項目
  2. 您可以選擇在「樹」項目獨立,例如,你可以選擇多個項目和他們沒有意識到這一點。像複選框而不是單選按鈕。
  3. 如果您完全省略了< TreeView>標籤,它仍然可以正常運行。

這是因爲TreeView無法完成它的工作:DataTemplate從TreeView隱藏TreeViewItems,因此它只能看到頂級項目。查看HierarchicalDataTemplate是一個很好的方法來啓用TreeView對象來查看整個樹。

+0

感謝您的廣泛答覆。我仍然不確定導致擴展器按鈕消失的原因,但是當我實現HierarchicalDataTemplate時它確實回來了。 – Dabblernl 2009-11-09 22:06:52