Silverlight datagrid同步滚动

Silverlight datagrid同步滚动,silverlight,datagrid,Silverlight,Datagrid,我有两个silverlight(2或3)数据网格(来自2009年7月的silverlight工具包),一个位于另一个之上。顶部datagrid保存值,底部datagrid保存摘要值(例如总计)。我希望它们各自的列始终保持对齐,即使在用户更改列标题宽度、列顺序以及用户水平滚动时也是如此。如何做到这一点 我使用两个数据网格,因为我希望在用户垂直滚动顶部数据网格的内容时,下部数据网格中的总值始终可见 我尝试使用getVisualDescendats()访问datagrid的水平滚动条,但这不会返回任何

我有两个silverlight(2或3)数据网格(来自2009年7月的silverlight工具包),一个位于另一个之上。顶部datagrid保存值,底部datagrid保存摘要值(例如总计)。我希望它们各自的列始终保持对齐,即使在用户更改列标题宽度、列顺序以及用户水平滚动时也是如此。如何做到这一点

我使用两个数据网格,因为我希望在用户垂直滚动顶部数据网格的内容时,下部数据网格中的总值始终可见


我尝试使用getVisualDescendats()访问datagrid的水平滚动条,但这不会返回任何元素。如何做到这一点?我猜这是可以做到的,因为Silverlight Spy显示了视觉层次结构。

我建议您将它们都放在一个网格内,宽度设置为网格的宽度。然后将网格放入滚动查看器中。然后在底部有一个滚动条,可以滚动两个网格


如果确实需要两个滚动条,则使用上述方法,但将它们都放在滚动查看器中并附加到OnScroll事件。然后,您可以使用该事件中的值以编程方式滚动另一个滚动查看器。

此方法是否可以扩展以处理列宽调整、重新排序和冻结列(我忘了提及)>可能不调整列大小,因为这是非常棘手的事。我过去曾尝试过为用户存储调整大小的列大小,但据我所知,没有一种干净的方法可以做到这一点。您可能能够绑定到datagrid resized事件(在调整列大小时触发)并调整较低网格的大小。一旦开始工作,我将探索更改实际列大小。这种方法(ScrollViewer)的问题是,当使用箭头键导航时,datagrid停止滚动,这是用户无法接受的。您还需要答案吗?我在上回答了一个类似的问题,可以发布代码来同步列宽。