C# 是否无法将页面的字符串表示形式强制转换为页面类型?
我在App.xaml.cs“forever”的OnLaunched()事件中有以下代码: …但我猜它实际上是第一次运行(执行状态被终止),因为我得到了以下错误消息: 用户代码未处理System.InvalidCastException HResult=-2147467262 消息=无法将“System.String”类型的对象强制转换为“System.type”类型 我正在每个页面的OnNavigatedTo()事件中将当前页面分配给此漫游设置: 是我的语法有问题,还是我的方法有问题 我想我可以这样分配:C# 是否无法将页面的字符串表示形式强制转换为页面类型?,c#,casting,windows-8,windows-store-apps,C#,Casting,Windows 8,Windows Store Apps,我在App.xaml.cs“forever”的OnLaunched()事件中有以下代码: …但我猜它实际上是第一次运行(执行状态被终止),因为我得到了以下错误消息: 用户代码未处理System.InvalidCastException HResult=-2147467262 消息=无法将“System.String”类型的对象强制转换为“System.type”类型 我正在每个页面的OnNavigatedTo()事件中将当前页面分配给此漫游设置: 是我的语法有问题,还是我的方法有问题 我想我可以
App.roamingSettings.Values["CurrentPageType"] = "DetailPage";
…然后在我的OnLaunched()事件中使用:
…但我正试图比这更“优雅”…我知道我可以一步一步地完成它,但我想知道是否有一个位置可以查看(我想是在注册表的某个地方),在那里可以查看为那些漫游设置保存的值)
更新
在看了这篇文章之后,考虑到那些不带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"];
}
}
}
试一试
当心序列化到CurrentPageParam中的内容,一些简单类型(例如TimeSpan)似乎可以序列化,但与Settings.Values字典序列化程序不兼容。
App.roamingSettings.Values["CurrentPageType"] = "DetailPage";
if (roamingSettings.Values["CurrentPageType"] == "DetailPage")
{
Frame.Navigate(typeof(DetailPage), App.activeSection);
}
else if (. . . etc. . . .)
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"]);