我在我的app.xaml.cs的onLaunched()事件中都有此代码:
if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
if ((roamingSettings.Values.ContainsKey("CurrentPageType")) &&
(roamingSettings.Values.ContainsKey("CurrentPageParam")))
{
rootFrame.Navigate((Type)roamingSettings.Values["CurrentPageType"],
roamingSettings.Values["CurrentPageParam"]);
}
}
...但是我想它实际上是第一次运行(执行状态已终止),因为我得到了此err msg:
system.invalidcastException通过用户代码没有任何处理 Hresult = -2147467262 消息=无法将'System.String'类型的对象施放到type'System.Type'。
我将当前页面分配给每个页面的onnavigatedto()事件中的漫游设置:
App.roamingSettings.Values["CurrentPageType"] = GetType().ToString();
我的语法问题,还是我的方法?
我想我可以这样分配:
App.roamingSettings.Values["CurrentPageType"] = "DetailPage";
...然后在我的Onlaunched()事件中进行此内容:
if (roamingSettings.Values["CurrentPageType"] == "DetailPage")
{
Frame.Navigate(typeof(DetailPage), App.activeSection);
}
else if (. . . etc. . . .)
...但是我试图变得比这更"优雅" ...我知道我可以浏览它,但是我想知道是否有一个位置(在注册表中,我认为)如果可以查看那些漫游设置的值的值)。
更新
查看此内容并考虑到那些不使用ARG的页面后,我将代码更改为:
if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
if (roamingSettings.Values.ContainsKey("CurrentPageType"))
{
if (roamingSettings.Values.ContainsKey("CurrentPageParam"))
{
rootFrame.Navigate((Type)roamingSettings.Values["CurrentPageType"],
roamingSettings.Values["CurrentPageParam"]);
}
else
{
rootFrame.Navigate((Type) roamingSettings.Values["CurrentPageType"];
}
}
}
尝试
rootFrame.Navigate(Type.GetType(roamingSettings.Values["CurrentPageType"].ToString()),
roamingSettings.Values["CurrentPageParam"]);