我有一个包含文本块项目堆栈面板的scrollviewer(实际上,这些可能是tabitems,我在scrollviewer中使用stackpanel来覆盖tabcontrol模板中的默认tabpanel)。我希望能够做的是,当更改选定的选项卡时,将新选择的选项卡移动到滚动查看器可见区域的中心。理想情况下,这适用于所有选项卡,甚至是远端的选项卡,但我愿意告诉滚动查看器滚动使得特定元素尽可能接近居中。
有没有明显的方法可以在WPF中实现这一目标?我现在能想到的所有解决方案都涉及很多关于自定义控件的工作。
答案 0 :(得分:13)
您可以使用以下代码轻松将内容设置为中心;
scrollviewer.ScrollToVerticalOffset(scrollviewer.ScrollableHeight / 2);
scrollviewer.ScrollToHorizontalOffset(scrollviewer.ScrollableWidth / 2);
答案 1 :(得分:7)
ScrollViewer.ScrollToHorizontalOffset()
正是您要找的。只需要计算所选元素相对于stackpanel的偏移量。您可以通过selectedElement.TranslatePoint( new Point(), stackPanel)
要使这个功能适用于远端的元素,您需要在滚动查看器的开头和结尾添加一些“空白”元素,以占用适当的空间。
为了使它看起来漂亮,请在计时器中调用ScrollToHorizontalOffset以使滚动“动画”而不是跳转
答案 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"/>