WPF - 滚动查看器中的内容?

时间:2011-04-14 23:56:14

标签: c# wpf scrollviewer

我有一个包含文本块项目堆栈面板的scrollviewer(实际上,这些可能是tabitems,我在scrollviewer中使用stackpanel来覆盖tabcontrol模板中的默认tabpanel)。我希望能够做的是,当更改选定的选项卡时,将新选择的选项卡移动到滚动查看器可见区域的中心。理想情况下,这适用于所有选项卡,甚至是远端的选项卡,但我愿意告诉滚动查看器滚动使得特定元素尽可能接近居中。

有没有明显的方法可以在WPF中实现这一目标?我现在能想到的所有解决方案都涉及很多关于自定义控件的工作。

enter image description here

3 个答案:

答案 0 :(得分:13)

您可以使用以下代码轻松将内容设置为中心;

scrollviewer.ScrollToVerticalOffset(scrollviewer.ScrollableHeight / 2);
scrollviewer.ScrollToHorizontalOffset(scrollviewer.ScrollableWidth / 2);

答案 1 :(得分:7)

ScrollViewer.ScrollToHorizontalOffset()正是您要找的。只需要计算所选元素相对于stackpanel的偏移量。您可以通过selectedElement.TranslatePoint( new Point(), stackPanel)

之类的方式获得

要使这个功能适用于远端的元素,您需要在滚动查看器的开头和结尾添加一些“空白”元素,以占用适当的空间。

为了使它看起来漂亮,请在计时器中调用ScrollToHorizo​​ntalOffset以使滚动“动画”而不是跳转

答案 2 :(得分:-1)

这对我有用:

  <TextArea id="error" fx:id="errorLog" disable="true" editable="false" prefHeight="262.0" prefWidth="38.0" style="-fx-text-fill: #ff0000" wrapText="true"/>
相关问题