在Xamarin Forms中,我在Code Behind中有一个ListView和以下方法:
protected async override void OnAppearing()
{
base.OnAppearing();
events.ItemsSource = await App.ServiceManager.GetStream();
}
,其中
events
是我的ListView并从rest webservice获取数据。
当我在ListView中选择一个项目时,我推送一个详细信息页面。问题是,当我弹回ListView时,调用方法OnAppearing()并再次进行远程调用。
相反,我希望滚动从之前的位置开始(在我推动新页面之前):怎么做?
答案 0 :(得分:1)
我认为你可以简单地使用
bool isFirstAppearing = true;
protected async override void OnAppearing()
{
base.OnAppearing();
if(isFirstAppearing) {
isFirstAppearing = false;
events.ItemsSource = await App.ServiceManager.GetStream();
}
}
答案 1 :(得分:0)
你可以检查它是否已被加载,如alessandro Caliaros的回答所示,或者如果你想获得新数据但仍然在同一位置滚动,你可以添加代码,以便设置滚动位置与以前一样:
var currentYPosition = _scrollView.ScrollY;
await _scrollView.ScrollToAsync(_scrollView.ScrollX, currentYPosition, true);