我已经将ScrollViewer应用于一个用户控件,如果高度超过,该控件会自动滚动到底部。现在我的页面正在关闭,滚动条位于底部位置,当我重新打开页面时,它仍保持在底部。
如何在每次打开该页面时将滚动条重置为顶部。
<ScrollViewer x:Name="myScrollViewer">
<Grid Margin="0,0,0,40">
</Grid>
</ScrollViewer>
ScrollViewer
提供ChangeView方法,可用于调整滚动状态:
// scroll to top
myScrollViewer.ChangeView(0, 0, 1);
您可以在页面加载后调用此方法,将ScrollViewer
滚动到顶部。
更新
如果您想访问ViewModel
中页面上的控件,有两种方法:
1.公共控制
此方法意味着您需要创建一个公共页面实例,然后在XAML中公开控件,如下所示:
滚动查看器页面.xaml
<ScrollViewer x:Name="myScrollViewer" x:FieldModifier="public">
<!-- your code -->
</ScrollViewer>
滚动查看器页面.xaml.cs
public sealed partial class ScrollViewerPage : Page
{
public static ScrollViewerPage Current;
public ScrollViewerPage()
{
this.InitializeComponent();
Current = this;
}
}
页面加载后,您可以使用此代码访问ScrollViewer
。
ScrollViewerPage.Current.myScrollViewer.ChangeView(0, 0, 1);
2.在ViewModel中定义控制变量/属性
可以在ViewModel
中定义类型为ScrollViewer
的变量或属性(公共(,然后在加载页面时为该属性赋值,然后可以通过访问ViewModel
中的属性来访问ScrollViewer
。
MyViewModel.cs
public class MyViewModel
{
public ScrollViewer MyScrollViewer { get; set; }
// Other code
}
滚动查看器页面.xaml.cs
public ScrollViewerPage()
{
this.InitializeComponent();
var vm = new MyViewModel();
vm.MyScrollViewer = myScrollViewer;
}