Xamarin Forms:弹回时如何不重新加载ListView

时间:2017-03-08 17:15:35

标签: xamarin xamarin.forms

在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()并再次进行远程调用。

相反,我希望滚动从之前的位置开始(在我推动新页面之前):怎么做?

2 个答案:

答案 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);