|
|
1
3
有一段很好的代码可以做到这一点: http://www.codeproject.com/KB/WPF/ScrollSynchronization.aspx |
|
|
2
3
根据Microsoft产品组的说法,遍历可视树以查找ScrollViewer是推荐的方法,如下所示 explained in their answer on Codeplex . |
|
|
3
1
我们在使用基础设施网格时遇到了同样的问题,因为它 (仍然不支持)冻结列。所以我们有两个并排的网格,看起来像一个网格。左侧的网格没有水平滚动,但右侧的网格有。可怜人的冻柱。
不管怎么说,我们最终只是把手伸进了视觉树,拉出了
有兴趣听到你为什么需要这样做。 |
|
|
4
1
这是一个很好的解决方案。我在WPF工作得很好。 http://www.codeproject.com/Articles/39244/Scroll-Synchronization 我刚刚引用了ScrollSynchronizer dll,添加了一个xml导入:
然后把它添加到我的datagrids和你叔叔的bobs中:
|
|
|
5
1
例如,在初始化usercontrol期间调用innerGridControl_ScrollChanged()处理程序时,可以欺骗datagrid将其ScrollViewer作为每个网格的公共属性公开。 例如,innerGrid.xaml.cs上有以下代码:
在OuterGridView.xaml上放置附加的事件处理程序定义:
然后在另一个滚动事件发生时访问公共ScrollViewer.SetHorizontalOffset(即HorizontalOffset)方法。 下面的代码位于其中一个处理程序定义的OuterGridView.xaml.cs中(
还要确保内部网格内的任何其他scroll_changed事件(如果有,例如,如果在一个列数据模板中定义了一个带有默认scroller的文本框)的e.Handled设置为true,以防止外部网格的处理程序处理它(这是由于routedevents的默认冒泡行为造成的)。或者,您可以在e.OriginalSource或e.Source上添加额外的if检查,以过滤您打算处理的滚动事件。 |