WPF Datagrid,是否有可能混合组和纯(非分组)行?
问题描述:
我正在使用WPF Datagrid并且需要显示10,000行,因此需要虚拟化。从几篇关于*的文章中,我发现虚拟化+分组对于WPF Datagrid来说是不可能的。这是因为渲染组的扩展器模板无法虚拟化。WPF Datagrid,是否有可能混合组和纯(非分组)行?
在我们的系统中,我们可能有10,000行,但每组只有3或4个。此外,绝大多数行不分组 - 它们有一个空的GroupId。在一个原型中,我正在将这些渲染器渲染为没有标题的组扩展器。我理想的是,那些不分组的,只有行,其余的都在一个扩展器内部呈现。这可能吗?
答
试试这个...
<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
谢谢!试着... – 2012-02-10 12:29:55
我编辑了我的文章! Plz看到笔记。 – 2012-02-10 13:32:49