gpt4 book ai didi

silverlight - Windows 手机 7 : Tombstoning with URIs?

转载 作者:行者123 更新时间:2023-12-03 02:24:53 26 4
gpt4 key购买 nike

我正在 Silverlight 中构建一个 wp7 应用程序。我的应用程序的所有状态都存储在 NavigationContext.QueryString 中。如果可以在应用程序停用时保存此信息,并且在应用程序重新激活时导航到该页面,那么就可以满足我对逻辑删除的要求。

但是,我不太确定该怎么做。我正在考虑将 NavigationContext.QueryString 保存到 App.xaml.cs::Application_Deactivated() 中的 State 字典,但该代码没有无法访问NavigationContext.QueryString。我还有其他方法可以做到这一点吗?

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

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

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

为了减少冗余,我想在一个继承自 PhoneApplicationPage 的类中实现此功能,然后让我的所有其余页面都继承自该类。但是,我随后遇到的问题是所有页面类都是 partial 因为它们也是在生成的代码中定义的。我不想更改生成的代码,因为每次重新生成时都重新更改它会很痛苦。

有更好的方法吗?

更新 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;
}

// ...

它(有点)有效,但很丑。

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

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

最佳答案

临时数据通常存储在 State dictionary provided by the PhoneApplicationService class 中。数据存储在页面的 OnNavieratedFrom 事件中,并从页面的 OnNavieratedTo 事件中恢复。如果您将页面 URI 中的参数存储在应用程序每个页面中可用的 OnNavieratedFrom 事件中的状态字典中,则可以实现逻辑来读取 OnNavieratedTo 事件中的参数,从而处理逻辑删除

HTH,indyfromoz

关于silverlight - Windows 手机 7 : Tombstoning with URIs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4099763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com