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

C# 如果某些设置已存在,请更改DefaultTask,c#,windows-phone-8,windows-phone,C#,Windows Phone 8,Windows Phone,在Windows phone 8应用程序中,我需要切换初始视图,而不是始终使用相同的PhoneApplicationPage打开应用程序。i、 e.主页(如果设置已存在)和设置页面(如果用户首次打开应用程序) 我该怎么做呢 目前我采用的方式是: 使WMAppManifest.xml中的默认任务为空 <DefaultTask Name="_default" /> 这是处理这种情况的最佳方式吗?我的代码有任何潜在的问题吗?有很多不同的方法可以做到这一点,但没有一种“最佳”方法 我个人

在Windows phone 8应用程序中,我需要切换初始视图,而不是始终使用相同的PhoneApplicationPage打开应用程序。i、 e.主页(如果设置已存在)和设置页面(如果用户首次打开应用程序)

我该怎么做呢

目前我采用的方式是:

使WMAppManifest.xml中的默认任务为空

<DefaultTask Name="_default"  />

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

有很多不同的方法可以做到这一点,但没有一种“最佳”方法

我个人的偏好是使用自定义的
UriMapper
,在启动时进行重定向。
例如

  • 将导航启动Uri设置为不存在的特殊内容。e、 g.“启动”
  • 设置自定义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;
        }
    }
    
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;
    }
}