如果某些设置已存在,请更改DefaultTask

时间:2013-11-06 12:57:01

标签: c# windows-phone-8 windows-phone

在Windows Phone 8应用程序中,我需要切换初始视图,而不是始终使用相同的PhoneApplicationPage打开应用程序。如果设置已存在则为主页;如果用户是第一次打开应用程序,则为设置页面。

我应该怎么做?

目前我采用的方式是:

WMAppManifest.xml中的默认任务为空

<DefaultTask Name="_default"  />

决定在Application_Launching事件处理程序中移动到哪个页面。

private void Application_Launching(object sender, LaunchingEventArgs e)
{
    if (SettingFileExists())
        RootFrame.Navigate(new Uri("Home.xaml", UriKind.Relative));
    else
        RootFrame.Navigate(new Uri("Settings.xaml", UriKind.Relative));
}

这是接近这种情况的最佳方式吗?我的代码有任何潜在问题吗?

1 个答案:

答案 0 :(得分:1)

有许多不同的方法可以做到这一点而没有一种“最佳”方式。

我个人的偏好是使用在启动时执行重定向的自定义UriMapper E.g。

  • 将导航启动Uri设置为不存在的特殊内容。例如“启动”
  • 设置自定义UriMapper:

        RootFrame.UriMapper = new MyUriMapper();
    
  • 然后在UriMapper中检查特殊的uri并采取适当的措施:

    public class MyUriMapper : UriMapperBase
    {
        public override Uri MapUri(Uri uri)
        {
            if (uri.OriginalString == "/StartUp")
            {
                if (!this.dataOperations.IsLoggedIn())
                {
                    return Login.Path;
                }
                else
                {
                    return Main.Path;
                }
            }
    
            return uri;
        }
    }