试图获取Horizo​​ntalOffset,始终返回0

时间:2012-08-23 16:31:02

标签: windows-8 windows-runtime scroll winrt-xaml dependency-properties

我正在使用C#/ xaml为Windows8 Metro编写应用程序。

我有一个Scrollviewer,想要获得水平偏移。

我试着用这个:

private void ScrollViewer_ViewChanged_1(object sender, ScrollViewerViewChangedEventArgs e)
    {
        int i = Convert.ToInt32(GetValue(ScrollViewer.HorizontalOffsetProperty));
    }

但我总是0,在调试器中它通过它向我显示偏移量为221.09并向下滚动!

迈克尔

1 个答案:

答案 0 :(得分:1)

如果向下滚动 - 除非您水平滚动,否则水平偏移不会改变。

也许您的事件处理程序不在ScrollViewer本身上,如果是这种情况 - 您需要在SV本身上调用GetValue,例如

private void ScrollViewer_ViewChanged_1(object sender, ScrollViewerViewChangedEventArgs e)
{
    int i = Convert.ToInt32(myScrollViewer.GetValue(ScrollViewer.HorizontalOffsetProperty));
}

或者更好但是这样做:

private void ScrollViewer_ViewChanged_1(object sender, ScrollViewerViewChangedEventArgs e)
{
    int i = Convert.ToInt32(myScrollViewer.HorizontalOffset);
}