查看scrollviewer是否位于页面顶部
本文关键字:于页面 顶部 是否 scrollviewer 查看 | 更新日期: 2023-09-27 18:08:22
我使用这段代码来查看滚动查看器是否位于页面底部。
private void OnScrollViewerUpdated(object sender, EventArgs e)
{
var verticalOffset = sv.VerticalOffset;
var maxVerticalOffset = sv.ExtentHeight - sv.ViewportHeight;
if (maxVerticalOffset < 0 ||
verticalOffset == maxVerticalOffset)
{
swipe_next();
}
}
我怎么能看到滚动查看器是在页面的顶部??如果滚动查看器位于页面底部,是否有可能转到页面顶部?
根据MSDN (http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer.aspx),您可以使用ScrollToVerticalOffset(double d)
方法滚动到顶部
所以你的方法调用应该像这样:
//scroll to top:
sv.ScrollToVerticalOffset(0);
如果垂直偏移量为0是你的视口顶部,那么你可以通过使用以下内容来检查:
if(sv.VerticalOffset == 0)
{
//...
}
您可能还需要跟踪指针被按下的位置以及scrollviewer
操作完成的事件。
这只是一个示例,请尝试使用此片段。
// Constructor
public MainPage()
{
InitializeComponent();
ListVerticalOffsetProperty = DependencyProperty.Register("ListVerticalOffset", typeof(double), typeof(MainPage), new PropertyMetadata(OnListVerticalOffsetChanged));
YourScrollViewer.Loaded += YourScrollViewer_Loaded;
}
void YourScrollViewer_Loaded(object sender, RoutedEventArgs e)
{
var binding = new Binding
{
Source = YourScrollViewer,
Path = new PropertyPath("VerticalOffset"),
Mode = BindingMode.OneWay
};
SetBinding(ListVerticalOffsetProperty, binding);
}
private void OnListVerticalOffsetChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
var atBottom = YourScrollViewer.VerticalOffset >= YourScrollViewer.ScrollableHeight;
if (atBottom) MessageBox.Show("End");
}
public readonly DependencyProperty ListVerticalOffsetProperty;
public double ListVerticalOffset
{
get { return (double)GetValue(ListVerticalOffsetProperty); }
set { SetValue(ListVerticalOffsetProperty, value); }
}
也看看这边。