2010-08-30 59 views
0

这基本上是一个跟进的问题我刚才的问题中发现here分组项忽略的项目风格(组显示空)

我想组项目中的组合框,但我的问题是,无论是GroupDescription是显示或项目。

如果我添加collectionView.GroupDescriptions.Add(new PropertyGroupDescription("Team"));那么我的ComboBoxItem样式将被忽略(它永远不会到达断点)。这是为什么?

我检查了collectionView,它包含3组,每组2个,因为它应该。但下拉菜单仅显示“分组名称”(即团队名称)。

****** EDIT ******

这个问题似乎是在我的ComboBoxStyle因为除去它使生活更精彩......

<Style x:Key="ImageComboBox" BasedOn="{StaticResource {x:Type ComboBox}}" TargetType="{x:Type ComboBox}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ComboBox"> 
        <Grid> 
         <ToggleButton Name="ToggleButton" Template="{StaticResource ComboBoxToggleButton}" Grid.Column="2" Focusable="false" IsChecked="{Binding Path=IsDropDownOpen,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press"/> 
         <ContentPresenter Name="ContentSite" IsHitTestVisible="False" Content="{TemplateBinding SelectionBoxItem}" ContentTemplate="{StaticResource DisplayImageWithText}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Margin="3,3,23,3" VerticalAlignment="Center" HorizontalAlignment="Left"/> 
         <TextBox x:Name="PART_EditableTextBox" Style="{x:Null}" Template="{StaticResource ComboBoxTextBox}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="3,3,23,3" Focusable="True" Background="Transparent" Visibility="Hidden" IsReadOnly="{TemplateBinding IsReadOnly}"/> 
         <Popup Name="Popup" Placement="Bottom" IsOpen="{TemplateBinding IsDropDownOpen}" AllowsTransparency="True" Focusable="False" PopupAnimation="Slide"> 
          <Grid Name="DropDown" SnapsToDevicePixels="True" MinWidth="{TemplateBinding ActualWidth}" MaxHeight="{TemplateBinding MaxDropDownHeight}"> 
           <Border x:Name="DropDownBorder" Background="{StaticResource WindowBackgroundBrush}" BorderThickness="1" BorderBrush="{StaticResource SolidBorderBrush}"/> 
           <ScrollViewer Margin="4,6,4,6" SnapsToDevicePixels="True"> 
            <Grid x:Name="itemsGrid" Height="Auto" Width="Auto" MaxWidth="{TemplateBinding MaxWidth}"> 
             <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained"/> 
            </Grid> 
           </ScrollViewer> 
          </Grid> 
         </Popup> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="HasItems" Value="false"> 
          <Setter TargetName="DropDownBorder" Property="MinHeight" Value="95"/> 
         </Trigger> 
         <Trigger Property="IsEnabled" Value="false"> 
          <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/> 
         </Trigger> 
         <Trigger Property="IsGrouping" Value="true"> 
          <Setter Property="ScrollViewer.CanContentScroll" Value="false"/> 
         </Trigger> 
         <Trigger SourceName="Popup" Property="Popup.AllowsTransparency" Value="true"> 
          <Setter TargetName="DropDownBorder" Property="CornerRadius" Value="4"/> 
          <Setter TargetName="DropDownBorder" Property="Margin" Value="0,2,0,0"/> 
         </Trigger> 
         <Trigger Property="IsEditable" Value="true"> 
          <Setter Property="IsTabStop" Value="false"/> 
          <Setter TargetName="PART_EditableTextBox" Property="Visibility" Value="Visible"/> 
          <Setter TargetName="ContentSite" Property="Visibility" Value="Hidden"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
+0

您是否为物品指定了ItemTemplate? – ASanch 2010-08-30 15:08:34

+0

在ComboBoxItemStyle我有 ... – debe 2010-08-30 15:22:28

+0

请参阅下面的答案。希望能帮助到你。如果它不能帮助你解决问题,也许你可以发布更多关于你的问题的信息,例如“ComboBoxItemStyle”的XAML,以及可能是你的ComboBox实例的完整XAML。 – ASanch 2010-08-30 15:36:19

回答

1

我不知道根据您在上面提供的信息,导致您的问题的是什么。但是,下面的代码,这是一个更新,我给你指定的链路上的答案,工作正常,我:

样式:

<Style x:Key="ComboBoxItemStyle" TargetType="ComboBoxItem"> 
    <Setter Property="Foreground" Value="Red"/> 
</Style> 

<Style x:Key="ComboBoxStyle" BasedOn="{StaticResource {x:Type ComboBox}}" TargetType="{x:Type ComboBox}"> 
    <Setter Property="ItemContainerStyle" Value="{StaticResource ComboBoxItemStyle}"/> 
</Style> 

组合框:

<ComboBox x:Name="comboBox" Style="{StaticResource ComboBoxStyle}"> 
    <ComboBox.GroupStyle> 
     <GroupStyle> 
      <GroupStyle.HeaderTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Name}"/> 
       </DataTemplate> 
      </GroupStyle.HeaderTemplate> 
     </GroupStyle> 
    </ComboBox.GroupStyle> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name}"/> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

希望这将帮助你解决你的问题。

+0

你的回答和评论作出了一些改变,它是ComboBoxStyle,它的恶棍......更新了问题的完整样式代码 – debe 2010-08-30 16:07:28

+0

我在你的ComboBoxStyle中看到,将更改为。我敢打赌,这应该修复它。让我知道如果它。 =) – ASanch 2010-08-30 16:36:00

+0

就像一个魅力。它总是应该是最低级别的ItemsPresenter还是? – debe 2010-08-30 18:53:24