2011-05-16 46 views
6

我試圖創建一個選項卡式邊欄的部分,就像WPF中的以下內容。我已經考慮過幾種方法,但有沒有更簡單更優雅的方法來實現它?創建選項卡式邊欄與部分WPF

方法1:列表框

使用ListBox和結合的SelectedItem到一個值,其右側的控制內容結合。爲了區分標題和部分,我使用了DataTemplate選擇器。


方法2:RADIOBUTTON /複選框/的ToggleButtons

使用單選按鈕,我所選擇的項目綁定到內容控制。但是,由於WPF錯誤,我將不得不使用值轉換器將它們鏈接在一起。


Tabbed Interface Split into Sections

enter image description here

+3

如果您的邊欄是分層的,爲什麼不在方法1中使用TreeView而不是ListBox? – publicgk 2011-05-16 08:40:29

+0

你能夠禁用樹視圖的展開/摺疊嗎? – 2011-05-16 09:31:34

回答

2

添加多一點的造型到這一點,我認爲這可能工作得很好

<TabControl TabStripPlacement="Left"> 
     <TabControl.Resources> 
      <Style TargetType="TabItem" x:Key="SideBarSectionStyle"> 
       <Setter Property="IsEnabled" Value="False" /> 
       <Setter Property="FontSize" Value="16" /> 
       <Setter Property="Foreground" Value="LightGreen" /> 
      </Style> 
     </TabControl.Resources> 

     <TabItem Header="Section A" Style="{StaticResource SideBarSectionStyle}" /> 
     <TabItem Header="Tab Item 1" IsSelected="True" /> 
     <TabItem Header="Tab Item 2" /> 
     <TabItem Header="Tab Item 3" /> 
     <TabItem Header="Tab Item 4" /> 
     <TabItem Header="Tab Item 5" /> 
     <TabItem Header="Section B" Style="{StaticResource SideBarSectionStyle}" /> 
     <TabItem Header="Tab Item 6" /> 
     <TabItem Header="Tab Item 7" /> 
     <TabItem Header="Tab Item 8" /> 
     <TabItem Header="Tab Item 9" /> 
    </TabControl> 
+0

爲什麼我不認爲 2011-05-18 02:46:46

1

這裏有一些更多的想法:

  1. (可能是最理想的)使用樹視圖並模板父母和孩子來隱藏展開按鈕。 This應該幫助你弄清楚如何隱藏它們。

  2. 而不是使用1個列表框,使用幾個列表框,每個列表框代表不同的選項類別。如果需要,您可以使用相同的模板或不同的模板。另外,我會將標題保留在列表框中,並將其作爲標籤或位於列表視圖之上的任何內容。您可以調整列表框上的邊距,以獲得像樹視圖那樣的父/子縮進。