【问题标题】:How do I add additional data to a DataGridRowGroupHeader?如何向 DataGridRowGroupHeader 添加其他数据?
【发布时间】:2010-03-22 12:40:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# silverlight datagrid silverlight-3.0


    【解决方案1】:

    经过反复试验,我能够自定义行组标题。解锁解决方案的关键在于RowGroupHeaderStyles 属性和DataGrid 上的LoadingRowGroup 事件。

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

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

    【讨论】:

    • 最初由 JDM 询问:Jeff,您如何在 LoadingRowGroup 事件中访问这些元素(例如 ToogleButton 或 Textblock)并设置或绑定相关值以显示您需要的信息?
    • 如何在 LoadingRowGroup 中获取标题属性值。能否请您的代码。
    • @HukmChand:很抱歉,我写的信息不正确。我已经更正了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多