C#/ WPF - 获取的ScrollViewer滚动位置? [英] C#/WPF - Get ScrollViewer scroll position?
问题描述
好了,所以,每个人都知道如何设置的ScrollViewer的滚动位置。整个文章和博客文章已经有许多关于 ScrollViewer.ScrollToVerticalOffset()
,有大约在这里答案的好几百个问题。
Okay, so, everyone knows how to set the scroll position of a ScrollViewer. Entire essays and blog entries have been written about ScrollViewer.ScrollToVerticalOffset()
, and there are a good few hundred questions with answers about it here.
所以,我请输入:
myScrollViewer.ScrollToVerticalOffset(280);
...它这么好心滚动到该位置。
... and it so kindly scrolls to that location.
现在的问题是,什么属性现在包含280 的,这样我就可以找回以后
The question is, what property now contains 280, so I can retrieve it later?
(提示:<?code> myScrollViewer.VerticalOffset 和 ContentVerticalOffset
都是0; myScrollViewer.ScrollInfo
刚纯不存在)
(Hint: myScrollViewer.VerticalOffset
and ContentVerticalOffset
are both 0; myScrollViewer.ScrollInfo
just plain doesn't exist.)
编辑:。很显然,我需要一个更详细的论证。
Apparently I need a more detailed demonstration.
private void btnTest_Click(object sender, RoutedEventArgs e) {
double scrollTarget = 280;
MessageBox.Show("Target: " + scrollTarget.ToString());
myScrollViewer.ScrollToVerticalOffset(scrollTarget);
MessageBox.Show("Now: " + myScrollViewer.VerticalOffset);
}
我要重申,这不按预期滚动 。顺利,这正是我想要的。但是, myScrollViewer.VerticalOffset
设置为0。
I must reiterate that this does scroll as intended. Goes right exactly where I want it to. But, myScrollViewer.VerticalOffset
is set at 0.
推荐答案
解决方案是手动调用 myScrollViewer.UpdateLayout()
在 myScrollViewer.ScrollToVerticalOffset()
。然后, myScrollViewer.VerticalOffset
将有期望值。
The solution is to manually call myScrollViewer.UpdateLayout()
after myScrollViewer.ScrollToVerticalOffset()
. Then, myScrollViewer.VerticalOffset
will have the expected value.
这篇关于C#/ WPF - 获取的ScrollViewer滚动位置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!