我有一个scrollviewer,其中包含一个表格控件(文本框,复选框,组合框等)一堆网格。当我通过控件选项卡时,滚动查看器将滚动,但仅在必要时才滚动。通过这个我的意思是我选中了scrollviewer中的所有内容,并且只有当控件不可见时,scrollviewer才会滚动。我想要完成的是当控件位于可见区域的底部25%时,向下滚动scrollviewer,然后当控件位于可见区域的顶部25%(反向标签)时向上滚动。这可以完成吗?设置何时滚动WPF ScrollViewer
3
A
回答
1
我发现这个问题的最好的解决办法是办理表单控件GotFocus事件。由于我在公共区域生成了控件,因此很容易将其分配给所有创建的控件。在这个事件处理程序中,我找到了元素在其包含网格中的位置。然后,我在滚动查看器上执行ScrollToVerticalOffset,计算滚动查看器渲染高度的一半的减法。如果可能的话,这将保持滚动查看器中间的主动控制。
void FormElement_GotFocus(object sender, RoutedEventArgs e)
{
FormElement element = sender as FormElement;
Point elementLocation = element.TranslatePoint(new Point(), canvasGrid);
double finalHeight = elementLocation.Y - (canvasScrollViewer.RenderSize.Height/2);
canvasScrollViewer.ScrollToVerticalOffset(finalHeight);
}
0
我想你应该编写一个实现IScrollInfo接口的自定义控件,并自定义接口提供的值的计算。
看看这个:http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.iscrollinfo.aspx
相关问题
- 1. C#/ WPF - 获取ScrollViewer的滚动位置?
- 2. WPF Scrollviewer滚动到鼠标位置
- 3. 在wpf中设置ScrollViewer的滚动范围
- 4. 在ScrollViewer中滚动位置?
- 5. 如何将WPF ScrollViewer的内容滚动到特定位置
- 6. WPF - 滚动查看滚动查看器时设置图像的可见性
- 7. WPF ScrollViewer:水平滚动不起作用
- 8. WPF的ScrollViewer不会滚动起来
- 9. WPF XAML的ScrollViewer不会滚动
- 10. ScrollViewer无法在WPF中滚动
- 11. WPF ScrollViewer不能纵向滚动
- 12. ScrollViewer不滚动
- 13. ScrollViewer不滚动
- 14. ScrollViewer不滚动
- 15. 在WPF框架上设置ScrollViewer(用于垂直滚动)的正确方法?
- 16. 如何在UWP中的ScrollViewer中设置滚动条的宽度?
- 17. 设置WPF的滚动查看器的可滚动区域大小
- 18. 当调用ScrollToHorizontalOffset()时,WPF - ScrollViewer不会滚动
- 19. WPF滚动条位置
- 20. 防止ScrollViewer滚动
- 21. 如何让WPF TextBlock在Text属性异步设置的位置滚动?
- 22. scrollviewer里面的listview防止scrollviewer滚动
- 23. WPF:如何以编程方式从ScrollViewer中提取滚动条?
- 24. 如何使scrollviewer滚动像素不是组件(wpf)
- 25. 如何增加WPF ScrollViewer中的滚动条宽度?
- 26. wpf - 我该如何测试scrollviewer中的滚动条?
- 27. 如何让WPF ScrollViewer中键单击滚动?
- 28. WPF - 设置网页浏览器滚动条的宽度
- 29. 设置ScrolViewArea滚动值?
- 30. 设置scrollviewer的垂直滚动条是可见的