Silverlight 3 BETA DataGrid分组

Cha*_*adT 3 silverlight datagrid silverlight-3.0

NB这是针对silverlight 3测试版,RTM似乎完全不同地处理分组.

我有一个工作正常的网格,我正在使用GroupDescriptions属性,如下所示:

<data:DataGrid.GroupDescriptions>
    <cm:PropertyGroupDescription PropertyName="ClientName" />
</data:DataGrid.GroupDescriptions>
Run Code Online (Sandbox Code Playgroud)

这种方法非常出色,只有在呈现数据网格时,它才会显示"ClientName"的分组.显然,我希望它是"客户名称".我不能为我的生活看到一个允许我设置它的属性?

Jam*_*add 8

FWIW在SL3 RTM中发生了变化:

Silverlight 3 Beta

[Xaml中]

<dataGrid.GroupDescriptions>

      <windata:PropertyGroupDescription PropertyName=”State” />

</dataGrid.GroupDescriptions>
Run Code Online (Sandbox Code Playgroud)

Silverlight 3 RTM

[C#]

pagedCollectionView.GroupDescriptions.Add(new PropertyGroupDescription(“State”));
Run Code Online (Sandbox Code Playgroud)

您需要使用PagedCollectionView类来完成此任务,它不能再在Xaml中完成.请参阅http://msdn.microsoft.com/en-us/library/dd833072(VS.95).aspx

从该链接,这里是如何更改组头中的文本:

当项目在DataGrid中分组时,每个组都有一个标题.您可以通过定义自定义样式并将其添加到RowGroupHeaderStyles集合来更改DataGridRowGroupHeader的外观.如果您有多个级别的分组,则可以为每个组级别应用不同的样式.样式按照定义的顺序应用.例如,如果您定义了两个样式,则第一个样式将应用于顶级行组.第二种样式将应用于第二级和更低级别的所有行组.DataGridRowGroupHeader的DataContext是标头表示的CollectionViewGroup.

所以一个快速而肮脏的例子是:

<dataControls:DataGrid x:Name="Grid">
    <dataControls:DataGrid.RowGroupHeaderStyles>
        <Style TargetType="dataControls:DataGridRowGroupHeader">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <TextBlock Text="My text."/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
   </dataControls:DataGrid.RowGroupHeaderStyles>
</dataControls:DataGrid>
Run Code Online (Sandbox Code Playgroud)

实际上,您可能希望包含为DataGridRowGroupHeader指定的其他控件部分,以便您可以展开和折叠它们.与所有WPF一样,您不必只设置"GroupText"属性,而是必须整整9码!