2010-03-22 73 views
2

我有一个DataGrid显示一些数据通过PagedCollectionView与一组定义。我创建了一个Style对应的DataGridRowGroupHeader,其中我添加了一个ControlTemplate,其中包含一个额外的TextBlock和间距Rectangle。我想将这些控件的宽度绑定到特定列的宽度,但我很努力使这个工作。我还想将TextBlockText属性绑定到一个值。如何向DataGridRowGroupHeader添加其他数据?

我试图通过在资源RectangleWidth属性绑定宽度,但这没有工作(可能是因为Rectangle从来没有引出,并因此没有计算它的布局)。然而,我相信这两套绑定可以使用一个或多个ValueConverter实现的一些使用,但我想知道是否有更好的方法。可以通过定义ControlTemplate来实现这一点吗?

回答

2

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

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

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

+0

最初由JDM提问:Jeff,您如何访问这些元素(例如ToogleButton或Textblock)并设置或绑定相关值以显示您在LoadRowGroup事件中所需的信息? – 2011-04-20 18:00:18

+0

您如何在LoadRowGroup中获取标题属性值。请问您的代码。 – Hukam 2011-08-06 08:43:55

+0

@HukmChand:对不起,我写了不正确的信息。我纠正了它。 – 2012-01-11 20:33:17