2017-01-19 51 views
0

我想使用CollectionViewSource將我的ObservableCollection分組,它似乎適用於項目,但它沒有顯示GroupBox的綁定屬性值。在ItemsControl中分組後不顯示組標題後顯示

這裏是我嘗試:含

我已經List<Object>的屬性描述,季節。我想按季節分組。這裏是我的xml:

<mah:MetroWindow x:Class="eCatalog_Launcher.MainWindow" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:local="clr-namespace:eCatalog_Launcher" 
      xmlns:mah="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" 
      xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks" 
      mc:Ignorable="d" 
      Title="eCatalog Launcher" 
      WindowState="Maximized" 
      Loaded="MetroWindow_Loaded" 
      Closing="MetroWindow_Closing"> 

<Window.Resources> 
    <CollectionViewSource x:Key="catalogsBySeasons" 
          Source="{Binding Path=Catalogs, Mode=TwoWay}"> 
     <CollectionViewSource.GroupDescriptions> 
      <PropertyGroupDescription PropertyName="Season" /> 
     </CollectionViewSource.GroupDescriptions> 
    </CollectionViewSource> 

</Window.Resources> 

<ScrollViewer> 
    <ItemsControl ItemsSource="{Binding Source={StaticResource catalogsBySeasons}}"> 
     <ItemsControl.GroupStyle> 
      <GroupStyle> 
       <GroupStyle.ContainerStyle> 
        <Style TargetType="{x:Type GroupItem}"> 
         <Setter Property="Template"> 
          <Setter.Value> 
           <ControlTemplate TargetType="{x:Type GroupItem}"> 
            <GroupBox Header="{Binding Season}"> 
             <ItemsPresenter /> 
            </GroupBox> 
           </ControlTemplate> 
          </Setter.Value> 
         </Setter> 
        </Style> 
       </GroupStyle.ContainerStyle> 
      </GroupStyle> 
     </ItemsControl.GroupStyle> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <mah:Tile Title="{Binding Description}" 
          Tag="{Binding}" 
          Style="{StaticResource SmallTileStyle}" 
          Click="Tile_Click"> 
        <iconPacks:PackIconMaterial Width="32" 
               Height="32" 
               Margin="0, -30, 0, 0" 
               Kind="{Binding Kind}"> 
        </iconPacks:PackIconMaterial> 
       </mah:Tile> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapPanel /> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
    </ItemsControl> 
</StackPanel> 

它顯示爲GroupBox標題季節值。 有什麼不對嗎?

回答

1

你應該綁定到組的名稱屬性:

<ControlTemplate TargetType="{x:Type GroupItem}"> 
    <GroupBox Header="{Binding Name}"> 
     <ItemsPresenter /> 
    </GroupBox> 
</ControlTemplate> 

這應該顯示季節財產的實際價值,你GROUP BY。

+0

是的,它使用'Name'正常工作。謝謝! – Saadi