Windows 8 窗口商店应用程序-将值返回到调用页面

Windows 8 窗口商店应用程序-将值返回到调用页面,windows-8,Windows 8,我有一个WinRT“Windows应用商店”应用程序,有两个页面:列表页面和编辑页面。当用户单击列表项并从底部应用程序栏选择“编辑”时,我将该项传递到编辑页面。我需要的是支持两种可能的用户操作: 如果用户使用后退按钮(顶部导航)返回,我希望未修改的项目返回调用页面 如果用户单击提供的“保存”按钮(在编辑页面上),我想更新项目的各种属性,将其保存到数据存储,并自动将修改后的项目返回到调用页面 无论哪种方式,调用页面都需要使用对项目所做的更改(如果有)更新其显示。我可以完成大部分工作,但我不知道

我有一个WinRT“Windows应用商店”应用程序,有两个页面:列表页面和编辑页面。当用户单击列表项并从底部应用程序栏选择“编辑”时,我将该项传递到编辑页面。我需要的是支持两种可能的用户操作:

  • 如果用户使用后退按钮(顶部导航)返回,我希望未修改的项目返回调用页面

  • 如果用户单击提供的“保存”按钮(在编辑页面上),我想更新项目的各种属性,将其保存到数据存储,并自动将修改后的项目返回到调用页面

无论哪种方式,调用页面都需要使用对项目所做的更改(如果有)更新其显示。我可以完成大部分工作,但我不知道如何将项目返回到调用页面。我该怎么办

请记住,未来将有其他页面添加到应用程序中(也将从主“列表”页面调用)。我需要做出调整,以便当我从给定的“子”页面返回列表页面时,列表页面的行为将根据返回的页面而有所不同。(希望这有道理……)

附加问题:我还想捕获返回导航事件,通知用户修改的项目将不会保存,并给他们继续、保存并继续或取消返回导航操作的选项。可能吗


TIA

我相信,如果我理解了你的问题,你正在寻找以下线索:

WinJS.Navigation.navigate("/path/to/your/page.html", {/*this object will be the second 'options' parameter to your page's ready function });


我认为对于我试图解决的问题,这种方法是错误的。我从未找到一种特别好的方法将值从子页面返回到父页面

相反,我的问题允许采用不同的方法。我有一个在应用程序中跟踪的项目的主列表。此列表已序列化到本地存储。调用子页面时,我传入一个现有项(用于编辑)或一个空实例(用于添加)

当我到达子页面时,我在LoadState方法中调出传入的项。如果传入的项为null,我将创建一个新实例,它将成为我的工作实例

从那里,我允许用户根据需要编辑项目。当用户保存该项时,我从存储器中反序列化主列表。然后,我要么将新项添加到主列表中,要么替换列表中的现有项。然后,我将主列表重新序列化为存储,替换已经存在的内容

当用户返回到调用(父)页面时,我在LoadState方法中从存储器中重新获取项目的主列表,并重新填充该页面。如果更新了现有项或添加了新项,则父页面将准确反映更改。这就是我最终需要实现的一切

我不知道是否有办法达到我最初的要求,但在这种情况下,至少我决定我不需要这样做。可能这种替代方法或类似方法是在“返回”事件中将对象传递到导航堆栈中父页面的唯一方法。

您使用的是C#/XAML还是HTML5/JS?
// This function is called whenever a user navigates to this page. It populates the page elements with the app's data.
ready: function (element, options) {