导航QueryString与PhoneApplicationService.Current.State

时间:2013-01-10 20:14:37

标签: c# windows-phone-7 windows-phone-8

我正在为我的Windows Phone 8应用程序使用NavigationContext.QueryString。例如,我在导航字符串中设置了像ItemId这样的URI标识符,在OnNavigatedTo中,我解析了Id并通过linq读取了项目。

    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;

这真的是推荐方式吗?

1 个答案:

答案 0 :(得分:0)

来自MSDN

  

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

link有其他方式来共享数据,但我不认为状态是推荐的方式。它更多的是用于墓碑化目的。