silverlight – Windows Phone 7:使用URI进行逻辑删除?

silverlight – Windows Phone 7:使用URI进行逻辑删除?,第1张

概述我正在Silverlight中构建一个wp7应用程序.我的应用程序的所有状态都存储在NavigationContext.QueryString中.如果这可以在应用程序停用时保存,并且该页面导航到应用程序重新激活时,那将照顾我对墓碑的要求. 但是,我不太清楚如何做到这一点.我正在考虑将NavigationContext.QueryString保存到App.xaml.cs :: Application 我正在Silverlight中构建一个wp7应用程序.我的应用程序的所有状态都存储在NavigationContext.queryString中.如果这可以在应用程序停用时保存,并且该页面导航到应用程序重新激活时,那将照顾我对墓碑的要求.

但是,我不太清楚如何做到这一点.我正在考虑将NavigationContext.queryString保存到App.xaml.cs :: Application_Deactivated()中的State字典中,但该代码无权访问NavigationContext.queryString.还有其他方法可以做到这一点吗?

我想我每次导航时都可以将查询字符串保存到状态字典中,然后在重新激活应用程序时将其恢复.还是有更好的方法?

更新:根据indyfromoz的回答,我想实现以下内容

OnNavigatedToHandler(){     // save NavigationContext.queryString in the State dictionary}

为了减少冗余,我想我会在一个继承自PhoneApplicationPage的类中实现它,然后让我的所有其余页继承自该类.但是,我得到的问题是所有页面类都是部分的,因为它们也是在生成的代码中定义的.我不想更改生成的代码,因为每次重新生成代码时都会重新进行修改,这将是一个巨大的痛苦.

有一个更好的方法吗?

更新2:这是我现在在我的应用程序的主页面(在启动时导航到的那个)中一起攻击的内容:

public partial class MainPivot : PhoneApplicationPage{    public MainPivot()    {        InitializeComponent();        Loaded += new RoutedEventHandler(MainPivot_Loaded);        Phoneapplicationservice.Current.Deactivated += new EventHandler<DeactivatedEventArgs>(App_Deactivated);        MessageBox.Show("launching main pivot (state count: " + Phoneapplicationservice.Current.State.Count + ")");        if (Phoneapplicationservice.Current.State.Count != 0)        {            DeBUG.Assert(Phoneapplicationservice.Current.State.ContainsKey(queryStringKey),"State is initialized,but contains no value for the query string");            string oldqueryString = (string)Phoneapplicationservice.Current.State[queryStringKey];            MessageBox.Show("old query string: " + oldqueryString);            NavigationService.Navigate(new Uri(oldqueryString));        }    }    public Readonly string queryStringKey = "queryString";    voID App_Deactivated(object sender,DeactivatedEventArgs e)    {        Phoneapplicationservice.Current.State[queryStringKey] = NavigationService.source;    }    // ...

它有效(sorta),但它很难看.

更新3:看起来wp7 *** 作系统将自动在基于页面的应用程序中重新加载正确的页面.我实际上是在使用页面,所以也许我在这里做的工作不多.

但是,它似乎没有起作用.我启动应用程序,转到页面,点击“开始”,然后点击“返回”.屏幕显示“正在恢复……”但似乎挂在那里.我的代码在这一点上应该以某种方式响应吗?有没有办法,即使在点击“开始”后我仍然可以保持调试器的连接?

解决方法 瞬态数据通常存储在 State dictionary provided by the PhoneApplicationService class中.数据存储在页面的OnNavigatedFrom事件中,并从页面的OnNavigatedTo事件中恢复.如果存储在OnNavigatedFrom事件是在应用程序中的每个页面内可用的状态字典从页面的URI参数,就可以实现逻辑中的OnNavigatedTo事件读取参数,从而采取墓碑的护理

HTH,indyfromoz

总结

以上是内存溢出为你收集整理的silverlight – Windows Phone 7:使用URI进行逻辑删除?全部内容,希望文章能够帮你解决silverlight – Windows Phone 7:使用URI进行逻辑删除?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1005399.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存