2014-03-05 160 views
0

分組組合框,我能夠在這裏找到一個分組組合框http://www.jarloo.com/wpf-combobox-with-groupings/WPF與膨脹

它適合我使用的例子,除了我需要一個額外的行爲。這些項目應該都可以在它們各自的頭文件(使用擴展器)下摺疊。

例如, 水果 蘋果 橙色 葡萄 動物 貓 狗 牛

以上的項目將被顯示在組合框的組合風格,但我會想每頭(這是水果,動物)是使用擴展器可摺疊。你能幫助一個例子嗎?

感謝, CHEV

+0

那你試試? – nvoigt

回答

2

預覽試試這個

<Grid> 
<Grid.Resources> 
    <Style x:Key="GroupItem" TargetType="{x:Type GroupItem}"> 
     <Setter Property="Margin" Value="0,0,0,5"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type GroupItem}"> 
        <Expander IsExpanded="True"> 
         <Expander.Header> 
          <DockPanel> 
           <TextBlock Text="{Binding Name}" FontWeight="Bold" Margin="2,5,0,2" FontSize="14"/> 
          </DockPanel> 
         </Expander.Header> 
         <Expander.Content> 
          <Border Margin="5,0,0,0"> 
           <ItemsPresenter /> 
          </Border> 
         </Expander.Content> 
        </Expander> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Grid.Resources> 
<ComboBox Height="27" HorizontalAlignment="Left" Margin="162,109,0,0" VerticalAlignment="Top" Width="195" DisplayMemberPath="Item" Name="cboGroup"> 
    <ComboBox.GroupStyle> 
     <GroupStyle ContainerStyle="{StaticResource GroupItem}"/> 
    </ComboBox.GroupStyle> 
</ComboBox> 
</Grid> 
+0

謝謝。這工作! – Jithu

0

你想要的是一個TreeView而不是ComboBox。 WPF TreeView本地支持此行爲。從MSDN下面的例子。

enter image description here

注意:這沒有你要找的下拉功能。

您的代碼應該是這樣的:

<TreeView SelectedItemChanged="TreeView_SelectedItemChanged"> 
    <TreeViewItem Header="Fruit"> 
    <TreeViewItem Header="Apple"/> 
    <TreeViewItem Header="Orange"/> 
    <TreeViewItem Header="Grape"/> 
    </TreeViewItem> 
<TreeViewItem Header="Animals"> 
    <TreeViewItem Header="Cat"/> 
    <TreeViewItem Header="Dog"/> 
    <TreeViewItem Header="Cow"/> 
    </TreeViewItem> 
</TreeView> 

編輯:增加額外的代碼,以防止用戶點擊的標題項目,而是它只是摺疊/展開的節點。

private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) 
{ 
    var item = e.NewValue as TreeViewItem; 
    if (item == null ||item.Items.Count == 0) return; 
    item.IsExpanded = !item.IsExpanded; 
    item.IsSelected = false; 
} 

編輯:這裏的id是什麼會是什麼樣子

enter image description here

+0

對回票的解釋會很好 – BenVlodgi

+0

使用樹型表示父項可選的可擴展項目。而使用分組時,組頭本身是不可選擇的。有一個可選擇的家長可能會混淆用戶認爲有效的項目選擇。 –

+0

@JoelLucsy這是一個有效的點,所以我現在編輯我的示例,以防止發生這種情況。 – BenVlodgi