【问题标题】:Silverlight datagrid synchronized scrollingSilverlight datagrid 同步滚动
【发布时间】:2009-10-19 14:40:45
【问题描述】:

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

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

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

【问题讨论】:

标签: silverlight datagrid


【解决方案1】:

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

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

【讨论】:

  • 这个方法能否扩展来处理列宽调整、重新排序和冻结列(我忘了提)>
  • 可能不会调整列大小,因为这非常棘手。我过去曾尝试为用户存储调整大小的列大小,但据我所知,没有一种干净的方法可以做到这一点。您可能能够绑定到 datagrid resized 事件(在列调整大小时触发)并调整下部网格的大小。一旦它起作用,我会探索改变实际的列大小。
  • 我使用这种方法 (ScrollViewers) 遇到的问题是数据网格在使用箭头键导航时停止滚动,这是用户无法接受的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多