如何将其他数据添加到DataGrid行组标题?

时间:2010-03-22 12:40:45

标签: c# silverlight datagrid silverlight-3.0

我有DataGrid通过PagedCollectionView显示一些具有一个组定义的数据。我为相应的Style创建了DataGridRowGroupHeader,我在其中添加了ControlTemplate,其中包含额外的TextBlock和间距Rectangle。我想将这些控件的宽度绑定到特定列的宽度,但我正在努力使这个工作。我还想将Text的{​​{1}}属性绑定到一个值。

我尝试通过资源中TextBlock的{​​{1}}属性绑定宽度,但这不起作用(可能是因为Width从未绘制过,因此没有计算出它布局)。

但是,我相信可以使用一个或多个Rectangle实现来执行这两组绑定,但我想知道是否有更好的方法。可以通过定义Rectangle

来实现这一切

1 个答案:

答案 0 :(得分:2)

经过一些试验和错误后,我能够自定义行组标题。解锁解决方案的关键涉及RowGroupHeaderStyles上的LoadingRowGroup属性和DataGrid事件。

通过为组定义一个或多个样式,我能够自定义控件模板以包含其他命名元素。然后,我使用该事件来访问这些元素,并设置或绑定相关值以显示我需要的信息。我遇到的唯一绊脚石是绑定控件的大小,我最终通过保存对每一行的引用并在需要刷新它们而不是依赖绑定时设置这些大小来解决这个问题。这可能与我的项目有关,因此您的里程可能会有所不同。

<强>更新
JDM询问如何在LoadingRowGroup事件处理程序中获取控件以执行绑定等。您可以从事件参数的DataGridRowGroupHeaderEventArgs.RowGroupHeader属性获取行标题,然后使用VisualTreeHelper获取标题的子控件。一旦拥有了控件,就可以像在任何其他控件中一样在代码中绑定它们。