2008-12-12 94 views
2

什麼將是改變WPF樹視圖方向的韌皮方法。我希望將展開 - 摺疊功能工作爲從左到右而不是從上到下。即當我點擊treenode的擴展按鈕時,我的子節點會出現在父節點的右側,而縮進應該是自頂向下的。此外,連接節點的垂直線現在必須是水平的。水平方向的WPF TreeView?

回答

2

要在你想要的水平擴大John Smith's CodeProject article,如果你想只在樹(而不是在所有層面上喜歡他的文章顯示)特定水平有水平佈局,那麼就設置在TreeViewItemItemsPanel財產有一個StackPanel

起初對我來說並不直觀,但您可以通過HierarchicalDataTemplateItemContainerStyle屬性獲取此屬性,以獲取想要水平的圖層上方的圖層。

像這樣:

<ItemsPanelTemplate 
    x:Key="ItemsPanelForHorizontalItems"> 
    <StackPanel 
     Orientation="Horizontal"/> 
</ItemsPanelTemplate> 

<HierarchicalDataTemplate 
    x:Key="DataTemplateForLayerAboveHorizontalItems" 
    DataType="{x:Type viewModel:ThingHavingHorizontalItems}" 
    ItemsSource="{Binding HorizontalItems}" 
    ItemTemplate="{StaticResource DataTemplateForLayerWithHorizontalItems}"> 
    <HierarchicalDataTemplate.ItemContainerStyle> 
     <Style 
      TargetType="TreeViewItem"> 
      <Setter 
       Property="ItemsPanel" 
       Value="{StaticResource ItemsPanelForHorizontalItems}"/> 
     </Style> 
    </HierarchicalDataTemplate.ItemContainerStyle> 
    <ContentControl 
     Content="{Binding}" 
     ContentTemplate="{StaticResource DataTemplateForThingHavingHorizontalItems}"/> 
</HierarchicalDataTemplate> 

根據這一模式將讓你爲你的樹內的任何單獨層設置水平佈局,除了根層。如果您希望根層爲水平,那麼只需將TreeView上的ItemsPanel屬性設置爲使用水平StackPanel即可。

+0

我應該補充說,擴展一個不同方向的圖層,而其餘的圖層不會破壞UI虛擬化。如果你知道如何解決這個問題,請參閱[這個問題](http://stackoverflow.com/q/42911247/3063273) – 2017-03-20 18:37:54