1

在 WP 应用程序中,我有树状列表,用户可以在其中查看类别和项目。

如果用户单击项目-> 我将导航到项目页面。

但是如果用户想要更深入并单击类别 - > 我需要向他显示内部类别和项目,那么如果可以再次打开此页面并显示内部类别和项目,那就太好了,因为它绝对有同样的逻辑

据我所知,我不能运行一个的多个实例Page

我可以在此页面的当前实例上显示内部类别,只需更改列表框内容,但这样我遇到了 2 个问题:

  1. 在后退按钮按下我需要显示以前的列表框,所以我需要将所有以前打开的列表框存储在类似Stack
  2. 我想为用户显示页面导航动画(也用于后退键),他会看到他在树列表中更深入,或者他回到以前的状态。

也许你们中的一些人已经做过同样的事情,你能给我一些建议吗?

4

1 回答 1

1

您可以拥有同一页面的多个实例。

假设每个类别都有一个唯一的 ID,您只需导航到页面并在查询字符串中提供一个 ID 参数。为最顶层的数据保留一个 ID(例如 0)。

因此,您的类别页面最初将像这样调用

NavigationService.Navigate("MyCategoriesPage?categoryId=0");

在 OnNavigatedTo 方法中,您解析 categoryId 并根据 Id 从后端或存储读取数据。

当用户点击一个类别时,您会根据类别 id 导航到同一页面,例如:

NavigationService.Navigate("MyCategoriesPage?categoryId=12");

Windows Phone 保留后退堆栈,因此将处理后退按钮上的导航。您应该记住的唯一一件事是,如果用户停用并重新激活应用程序,该应用程序可能会被删除。在这种情况下,不会保留列表框数据。要处理它,请确保您遵循 OnNavigatedTo 方法中的标准模式:

if (!_isInitialized)
{
   int categoryId = int.Parse(NavigationContext.QueryString["categoryId"]);
   ReadData(categoryId);
   _isInitialized = true;
} 
于 2013-04-05T13:10:47.000 回答