Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Комбинированная группировка в списке


Автор: RastaDja 11.2.2013, 10:05
Доброго времени суток!

Есть у меня список, который сгрупирован по полю "Group"

Код

researchList = new ObservableCollection<ListClass>();
ICollectionView view = CollectionViewSource.GetDefaultView(researchList);
view.GroupDescriptions.Add(new PropertyGroupDescription("Group"));
//view.SortDescriptions.Add(new SortDescription("Group", ListSortDirection.Descending));
ResearchList.ItemsSource = view;

Код

<ListBox Name="ResearchList" Grid.Row="0" HorizontalContentAlignment="Stretch" BorderThickness="0"
          ItemTemplate="{StaticResource OpenResearchTmpl}"
          ItemContainerStyle="{StaticResource OpenResearchListBoxItem}"  
          ScrollViewer.HorizontalScrollBarVisibility="Disabled"
          IsSynchronizedWithCurrentItem="True" 
         SelectionChanged="ResearchList_SelectionChanged"
         Margin="4">
     <ListBox.GroupStyle>
          <GroupStyle HidesIfEmpty="True">
               <GroupStyle.ContainerStyle>
                    <Style TargetType="{x:Type GroupItem}">
                    <Setter Property="Margin" Value="0,0,0,2"/>
                    <Setter Property="Template">
                         <Setter.Value>
                              <ControlTemplate TargetType="{x:Type GroupItem}">
                                   <Border CornerRadius="0" Background="#FFF5F5F5" SnapsToDevicePixels="True" BorderThickness="1" BorderBrush="#FFC4C4C4">
                                        <Expander IsExpanded="True" x:Name="expander" BorderThickness="0" Template="{StaticResource StretchyExpanderTemp}">
                                             <Expander.Header>
                                                   <DockPanel Height="32">
                                                        <TextBlock HorizontalAlignment="Stretch" VerticalAlignment="Center" FontWeight="Bold" FontSize="12" Text="{Binding Path=Name}" Margin="5,0,0,0"/>
                                                     </DockPanel>
                                               </Expander.Header>
                                               <Expander.Content>
                                                    <Border Background="White">
                                                         <ItemsPresenter />
                                                    </Border>
                                               </Expander.Content>
                                          </Expander>
                                     </Border>
                                </ControlTemplate>
                           </Setter.Value>
                      </Setter>
                 </Style>
            </GroupStyle.ContainerStyle>
      </GroupStyle>
 </ListBox.GroupStyle>
</ListBox>


в итоге получается список вида:
+ Группа 1
     = эл. группы 1
     = эл. группы 1
+ Группа 2
     = эл. группы 2
     = эл. группы 2

Понадобилось сгрупировать некоторые элементы еще по одному параметру, при этом другие элементы группировать не нужно
+ Группа 1
     + Подгруппа 1
          = эл. подгруппы 1
          = эл. подгруппы 1
     + Подгруппа 2
           = эл. подгруппы 2
+ Группа 2
     = эл. группы 2
     = эл. группы 2

Как такое можна сделать с помощью ListBox или ListView?
Спасибо за помощь!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)