none
datagrid如何多重分组? RRS feed

  • 问题

  •  <CollectionViewSource  x:Key="FlickrGroupedFeed" Source="{Binding Path=DoorWatchListView}">
                <CollectionViewSource.GroupDescriptions>
                    <PropertyGroupDescription PropertyName="AreaPlace"/>
                </CollectionViewSource.GroupDescriptions>
            </CollectionViewSource>

    你好,我用上面的代码可以实现单个分组,我想在分组里面再分组,至少有三层的分组,datagrid代码怎么写呀?多谢

    2012年2月23日 4:27

答案

  • 一样的呀,你继续往CollectionViewSource.GroupDescriptions里面添加你下一个要分组的属性就可以了。

    我直接用了他的代码:http://www.c-sharpcorner.com/uploadfile/dpatra/grouping-in-datagrid-in-wpf/ 不想再写了,然后在C#中就 再添加

                collection.GroupDescriptions.Add(new PropertyGroupDescription("Contact"));

    就可以继续对 Contact 分一次。同样XAML也是一样,只要你设计一下相应的GroupStyle就可以了

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月23日 10:04
    版主
  • 你可以定义多个 GroupHeaderStyle ,然后再应用的 时候通过一个 StyleSeletor 到 GroupStyle.ContainerStyleSelector 来选择相应的Style。

        public class GroupItemStyleSelector : StyleSelector
        {
          public override Style SelectStyle(object item,
              DependencyObject container)
          {
            // 判断 选择合适的Style 返回
            // return st;
          }
        } 

    XAML:

         <DataGrid.GroupStyle>
            <GroupStyle>
              <GroupStyle.ContainerStyleSelector>
                <l:GroupItemStyleSelector />
              </GroupStyle.ContainerStyleSelector>
              <GroupStyle.Panel>
                <ItemsPanelTemplate>
                  <Custom:DataGridRowsPresenter/>
                </ItemsPanelTemplate>
              </GroupStyle.Panel>
            </GroupStyle>
          </DataGrid.GroupStyle>

    Sincerely,

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月29日 3:37
    版主

全部回复

  • 一样的呀,你继续往CollectionViewSource.GroupDescriptions里面添加你下一个要分组的属性就可以了。

    我直接用了他的代码:http://www.c-sharpcorner.com/uploadfile/dpatra/grouping-in-datagrid-in-wpf/ 不想再写了,然后在C#中就 再添加

                collection.GroupDescriptions.Add(new PropertyGroupDescription("Contact"));

    就可以继续对 Contact 分一次。同样XAML也是一样,只要你设计一下相应的GroupStyle就可以了

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月23日 10:04
    版主
  • 直接在GroupDescriptions里面增加可以有多级,问题是式样

        <Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type GroupItem}">
                            <Expander x:Name="exp" IsExpanded="True"
                              Background="White"
                              Foreground="Black">
                                <Expander.Header>
                                    <TextBlock Text="{Binding Name}"/>
                                </Expander.Header>
                                <ItemsPresenter />
                            </Expander>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

    式样怎么搞呢?按照他给的上面那样,但是所有的group头都一样,所以第一级和第二级看不出来,这个有什么好点的设置方法没?

    2012年2月28日 6:21
  • 你可以定义多个 GroupHeaderStyle ,然后再应用的 时候通过一个 StyleSeletor 到 GroupStyle.ContainerStyleSelector 来选择相应的Style。

        public class GroupItemStyleSelector : StyleSelector
        {
          public override Style SelectStyle(object item,
              DependencyObject container)
          {
            // 判断 选择合适的Style 返回
            // return st;
          }
        } 

    XAML:

         <DataGrid.GroupStyle>
            <GroupStyle>
              <GroupStyle.ContainerStyleSelector>
                <l:GroupItemStyleSelector />
              </GroupStyle.ContainerStyleSelector>
              <GroupStyle.Panel>
                <ItemsPanelTemplate>
                  <Custom:DataGridRowsPresenter/>
                </ItemsPanelTemplate>
              </GroupStyle.Panel>
            </GroupStyle>
          </DataGrid.GroupStyle>

    Sincerely,

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月29日 3:37
    版主