C# 为什么以前选定的GridView项不显示为选定项?

C# 为什么以前选定的GridView项不显示为选定项?,c#,gridview,winrt-xaml,C#,Gridview,Winrt Xaml,我有一个Windows8应用程序,它使用GridView显示项目集合。我已经用C和XAML创建了这个应用程序。GridView是多选项的 当用户离开GridView页面时,我使用:navigationHelper\u SaveState将网格中的哪些项目保存到应用程序状态 当用户返回GridView页面时,我想重新选择以前选择的项目 我已经确认保存和加载状态都可以工作 但是,当用户返回页面时,不会选择以前选择的项目。从navigationHelper_LoadState中。我这样做是为了选择以前

我有一个Windows8应用程序,它使用GridView显示项目集合。我已经用C和XAML创建了这个应用程序。GridView是多选项的

当用户离开GridView页面时,我使用:navigationHelper\u SaveState将网格中的哪些项目保存到应用程序状态

当用户返回GridView页面时,我想重新选择以前选择的项目

我已经确认保存和加载状态都可以工作

但是,当用户返回页面时,不会选择以前选择的项目。从navigationHelper_LoadState中。我这样做是为了选择以前选择的所有项目:

for (int i = 0; i < numPrevSelectedItems; i++) {    
  ItemsGridView.SelectedItems.Add(items[i]);
}
我在StackOverflow的其他地方读到,使用SelectedItems.Add应该可以工作。然而,这对我不起作用。当用户返回页面时,不会看到以前选择的项目

有趣的是,ItemsGridView.SelectAll;确实有效


让它正常工作的最佳方法是什么?

您可以这样做:

// Get the selected rows
DataGridViewSelectedRowCollection SelectedRowsCollection = ItemsGridView.SelectedRows;

// Clear your ItemsGridView selected rows (Just for testing the following code)
ItemsGridView.ClearSelection();

// Get your previous selected rows again.
foreach (DataGridViewRow item in SelectedRowsCollection)
{
    int idx = ItemsGridView.Rows.IndexOf(item);
    ItemsGridView.Rows[idx].Selected = true;
}

希望有帮助。

我解决了这个问题。我做了一个实验,从GridView本身向ItemsGridView.SelectedItems添加了一个项目。这起作用了。这让我意识到,因为我是通过捕获应用程序状态的JSON字符串重新序列化所选项目,所以SelectedItems没有指向GridView中的实际项目实例。