WP树状列表导航

时间:2013-04-03 12:28:28

标签: windows-phone-7 windows-phone-8 windows-phone treelist

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

如果用户点击了商品 - >我将导航到项目页面。

但如果用户想要更深入并点击类别 - >我需要向他展示内部类别和项目,所以如果可以再次打开实例此页面并显示内部类别和项目,那将会很棒,因为它具有完全相同的逻辑

据我所知,我无法运行一个Page的多个实例。

我可以通过更改列表框内容来显示此页面当前实例的内部类别,但是通过这种方式我遇到了2个问题:

  1. 按下后退按钮我需要显示上一个列表框,因此我需要将所有以前打开的列表框存储在Stack
  2. 之类的内容中
  3. 我想为用户显示页面导航动画(也用于后退键),他会看到他在树列表中更深入或者他回到以前的状态。
  4. 也许你们中的一些人已经做过同样的事情了,你能不能给我一些建议?

1 个答案:

答案 0 :(得分:1)

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

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

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

NavigationService.Navigate("MyCategoriesPage?categoryId=0");
方法OnNavigated中的

解析categoryId并根据后端或存储中的Id读取数据。

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

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

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

if (!_isInitialized)
{
   int categoryId = int.Parse(NavigationContext.QueryString["categoryId"]);
   ReadData(categoryId);
   _isInitialized = true;
}