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"的分组.显然,我希望它是"客户名称".我不能为我的生活看到一个允许我设置它的属性?
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码!