是否不可能将页面的字符串表示形式投放到页面类型



我在我的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"]);

相关内容

最新更新