为什么我的列表视图在返回后是空的?

本文关键字:返回 我的 列表 视图 为什么 | 更新日期: 2023-09-27 18:12:42

我在MainPage中有一个itemsource="{Binding}"的listview。然后用下面的代码填充。

        viewContacts.ItemsSource = null;
        viewContacts.ItemsSource = itemsList;

itemsList是一个ObservableCollection .

我也有一个功能,如果我按下一个项目导航到另一个页面。

        private void viewContacts_ItemClick(object sender, ItemClickEventArgs e)
    {
        var clickedcontact = e.ClickedItem as contact;
        this.Frame.Navigate(typeof(contactdetails), clickedcontact);
    }

contactdetails是一个DetailPage。

如果我用这段代码返回到DetailPage

        private void App_BackRequested(object sender, BackRequestedEventArgs e)
    {
        if (Frame.CanGoBack)
        {
            Frame.GoBack();
            e.Handled = true;
        }
    }

我的列表是空的,我必须按另一个搜索键来查找联系人。

回到WP8.1,我的列表不是空的,而是填满了之前的结果。

Windows Universal App 10, VS 2015, c#, XAML

为什么我的列表视图在返回后是空的?

首先,如果你做了viewContacts.ItemsSource = itemsList;,就没有必要做itemsource="{Binding}。第二,当你离开页面的时候你是否做过LoadState或者SaveState或者你是否将数据保存在OnNavigatedFrom或者加载到OnNavigatedTo??

为了让你的数据继续存在,你必须把它们保存在某个地方。最简单和最快的方法是将它们保持在静态状态,如:

public static ObservableCollection<MyClass> itemsList = new ObservableCollection<MyClass>();

您需要将NavigationCache设置为required,以便它保留输入。看看这个msdn页面:页面。NavigationCacheMode

所以页面不需要重新加载所有的东西