WPF Datagrid,是否有可能混合组和纯(非分组)行?

问题描述:

我正在使用WPF Datagrid并且需要显示10,000行,因此需要虚拟化。从几篇关于*的文章中,我发现虚拟化+分组对于WPF Datagrid来说是不可能的。这是因为渲染组的扩展器模板无法虚拟化。WPF Datagrid,是否有可能混合组和纯(非分组)行?

在我们的系统中,我们可能有10,000行,但每组只有3或4个。此外,绝大多数行不分组 - 它们有一个空的GroupId。在一个原型中,我正在将这些渲染器渲染为没有标题的组扩展器。我理想的是,那些不分组的,只有行,其余的都在一个扩展器内部呈现。这可能吗?

WPF Datagrid with Grouped and Ungrouped rows

试试这个...

<GroupStyle.ContainerStyle> 
    <Style TargetType="{x:Type GroupItem}"> 
     <Style.Resources> 
      <ControlTemplate x:Key="MultiItemGroupTemplate" 
          TargetType="{x:Type GroupItem}"> 
       <Expander IsExpanded="False"> 
        <Expander.Header> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{Binding Path=Name}" /> 
         </StackPanel> 
        </Expander.Header> 
        <ItemsPresenter /> 
       </Expander> 
      </ControlTemplate> 
      <ControlTemplate x:Key="SingleItemGroupTemplate" 
          TargetType="{x:Type GroupItem}"> 
        <ItemsPresenter /> 
      </ControlTemplate> 
     </Style.Resources>         
     <Style.Triggers> 
      <DataTrigger Binding="{Binding ItemCount}" Value="1"> 
       <Setter Property="Template" 
         Value="{StaticResource SingleItemGroupTemplate}"> 
       </Setter> 
      </DataTrigger> 
     </Style.Triggers> 
     <Setter Property="Template" 
       Value="{StaticResource MultiItemGroupTemplate}"/> 
    </Style> 
</GroupStyle.ContainerStyle> 

注意:请注意,这会为DataGrid改变... DataGrid的ItemPresenter实际上是DataGridRowsPresenter

+0

谢谢!试着... – 2012-02-10 12:29:55

+1

我编辑了我的文章! Plz看到笔记。 – 2012-02-10 13:32:49