在WPF中,我有一个包含7个不同组框的scrollviewer。 每个groupbox都是不同表单的独立部分。 因为滚动查看器太长了,所以我在面板左侧的堆栈面板中放置了一系列按钮,并完成了代码隐藏,因此单击按钮会触发相应组框的BringIntoView方法。

我的问题是,有没有办法强制BringIntoView每次都将组框定位在可见部分的顶部。 默认情况下,BringIntoView仅移动滚动查看器,直到整个组框都在视图中,而不是显示最顶层的项目。 有没有解决的办法?

我研究了使用ScrollToVerticalOffset,但无法弄清楚如何获得正确的位置,主要是因为它说groupbox没有Locate属性,我将用它来获取位置,然后用ScrollToVerticalOffset设置它。 我在打字时想到的一件事就是让每个按钮 - 首先将jusmp压到顶部的groupbox,然后立即继续正确的一个,但这看起来很糟糕,我更喜欢找到正确的方法。 :)

===============>>#1 票数:10 已采纳

试试这个:

private void ScrollToGroupBox(GroupBox groupBox)
{
  GeneralTransform groupBoxTransform = groupBox.TransformToAncestor(scrollViewer);
  Rect rectangle = groupBoxTransform.TransformBounds(new Rect(new Point(0, 0), groupBox.RenderSize));
  scrollViewer.ScrollToVerticalOffset(rectangle.Top + scrollViewer.VerticalOffset);
}

代码在Scrollviewer中获取GroupBox的位置并滚动到它。

  ask by Keven M translate from so

未解决问题?本站智能推荐:

1回复

是否可以在WPF中设置BringIntoView方法的动画?

是否可以在WPF中设置BringIntoView方法的动画? 我们希望对ScrollView进行漂亮的动画过渡,而不是直接跳转到包含的控件。 我们如何做到这一点?
1回复

BringIntoView方法不适用于内部扩展器

我有一个带有多个扩展器的WPF应用程序 但是BringIntoView方法不适用于内部扩展器,我该如何解决?
2回复

使用MVVM的TreeView BringIntoView

我希望用户能够在TreeView中搜索项目。 输入searchtext后,TreeViewItem应滚动到视图中。 现在我正在使用TreeView的MVVM模式,TreeViewItems和MainView。 我需要做些什么才能使用MVVM获得BringIntoView的功能?
1回复

BringIntoView不起作用

我在事件处理程序后面有这个代码: } XAML中的一个Border对象的示例: 这行代码: borders[iBorder].BringIntoView(); 它似乎不起作用。 我所有Border对象的颜色都设置正确,但程序显然没有尝试反对这行代码。 为了提供此B
30回复

居中的最佳方法

这个问题已经在这里有了答案 : 如何水平和垂直居中放置元素 (19个答案) 11个月前关闭。 在页面上垂直和水平居中放置<div>元
4回复

在表格单元格中将所有图像垂直和水平居中的正确方法html

我有一个带有html页面的表(它将是产品页面)。 每行的第一个单元格都有一个图像,但是没有文本(固定大小),我需要垂直和水平地将图像居中。 具有列名称的第一行显然没有图像。 将有很多行,每个行在第一个单元格中都有不同的图像,我想将“中心V&H”应用于所有行。 我每周花每天识字时间
5回复

窗口中div的垂直+水平居中的最简单方法是什么?

给定已知尺寸的div ,例如width: 300px; height: 200px width: 300px; height: 200px ,最简单的方法是将它垂直和水平放置在屏幕中间? 这里的例子 我对最新的Firefox感兴趣(不需要IE黑客)。 只有CSS,没有Javasc
2回复

UserControl BringIntoView()无法正常工作

背景:我有一个usercontrol中定义ScrollViewer与沿ContentControl ,在ContentControl会看到所有的时间,并在其中有一个Button ,点击会在设定的按钮时usercontrol到Visible ,当usercontrol显示( Visiblility
1回复

如何在WPF中执行顺序的BringIntoView调用?

我们的应用程序中有一个TreeView ,具有以下要求: 添加项目时: 新添加的项目将滚动到视图中 新添加的项的父项也滚动到视图中。 如果它们距离太远而无法同时看到两者,则该项目优先。 这似乎很简单,只需先将父级滚动到视图中,然后滚动子级即可。 问题
1回复

wpf richtextbox BringIntoView无法使用TextRange.ClearAllProperties吗?

我正在wpf中编程。当突出显示的单词从viewportHeight中移出时,我必须向上滚动一页。所以我正在使用下面的代码。它工作正常。 但是之后,我需要使用以下代码突出显示单词。 在我使用fullRange.ClearAllProperties(); fce.BringInto