在WP应用程序中,我有树状列表,用户可以看到类别和项目。
如果用户点击了商品 - >我将导航到项目页面。
但如果用户想要更深入并点击类别 - >我需要向他展示内部类别和项目,所以如果可以再次打开实例此页面并显示内部类别和项目,那将会很棒,因为它具有完全相同的逻辑。
据我所知,我无法运行一个Page
的多个实例。
我可以通过更改列表框内容来显示此页面当前实例的内部类别,但是通过这种方式我遇到了2个问题:
Stack
也许你们中的一些人已经做过同样的事情了,你能不能给我一些建议?
答案 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;
}