2012-02-09 126 views
3

我正在使用WPF Datagrid並且需要顯示10,000行,因此需要虛擬化。從幾篇關於StackOverflow的文章中,我發現虛擬化+分組對於WPF Datagrid來說是不可能的。這是因爲渲染組的擴展器模板無法虛擬化。WPF Datagrid,是否有可能混合組和純(非分組)行?

在我們的系統中,我們可能有10,000行,但每組只有3或4個。此外,絕大多數行不分組 - 它們有一個空的GroupId。在一個原型中,我正在將這些渲染器渲染爲沒有標題的組擴展器。我理想的是,那些不分組的,只有行,其餘的都在一個擴展器內部呈現。這可能嗎?

WPF Datagrid with Grouped and Ungrouped rows

回答

2

試試這個...

<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