4

我正在为我的 Windows Phone 8 应用程序使用 NavigationContext.QueryString。例如,我在导航字符串和 OnNavigatedTo 中设置了一个类似 ItemId 的 URI 标识符,我解析 Id 并通过 linq 读取 Item。

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        try
        {
            int itemId = int.Parse(NavigationContext.QueryString["itemId"]);

            _item = App.MainViewModel.GetItem(itemId);

            DataContext = _item;
        }
        catch (KeyNotFoundException ex)
        {
            Debug.WriteLine(ex.Message);
            throw;
        }
    }

我找到了一个有趣的替代方案,想听听您的意见:

// in the calling page
PhoneApplicationService.Current.State["Item"] = App.MainViewModel.GetItem(123);

// in the destination page
Item item = PhoneApplicationService.Current.State["Item"] as Item;

这真的是推荐的方式吗?

4

1 回答 1

0

来自MSDN

PhoneApplicationService 类提供对应用程序生命周期各个方面的访问。这包括管理应用程序的空闲行为和管理应用程序变为活动或不活动时的状态。您可以这样使用它,但数据必须是可序列化的。

链接有其他共享数据的方式,但我不认为 state 是推荐的方式。它更多地用于墓碑目的。

于 2013-01-10T20:25:42.087 回答