WPF-将内容居中在scrollviewer中?

| 我有一个scrollviewer,其中包含一个文本块项的堆栈面板(实际上,这些可能是tabitems,我在scrollviewer中使用堆栈面板来覆盖tabcontrol模板中的默认tabpanel)。我想做的是,当更改选定的选项卡时,将新选择的选项卡移动到scrollviewer的可见区域的中心。理想情况下,这将适用于所有选项卡,即使是位于远端的选项卡,但我会同意告诉滚动查看器进行滚动,以使特定元素尽可能接近居中位置。 在WPF中是否有任何明显的方法可以实现这一目标?我现在能想到的所有解决方案都涉及自定义控件的大量工作。     
已邀请:
ScrollViewer.ScrollToHorizontalOffset()
是您所要的。只需计算所选元素相对于堆栈面板的偏移量即可。你可以用ѭ1之类的东西来得到 为了使此功能适用于远端的元素,您需要在scrollviewer的开头和结尾添加一些“空白”元素以占用适当的空间。 为使外观漂亮,请在计时器中调用ScrollToHorizo​​ntalOffset以使滚动“动画”而不是跳转     
您可以使用以下代码轻松地将内容设置为中心;
scrollviewer.ScrollToVerticalOffset(scrollviewer.ScrollableHeight / 2);
scrollviewer.ScrollToHorizontalOffset(scrollviewer.ScrollableWidth / 2);
    
这为我工作:
//for ScrollViewer s;
s.ScrollToHorizontalOffset((s.ExtentWidth - s.ViewportWidth) / 2);
s.ScrollToVerticalOffset((s.ExtentHeight - s.ViewportHeight) / 2);
    

要回复问题请先登录注册