初始化WP8应用程序

时间:2014-02-20 07:31:12

标签: c# windows-phone-8

我想初始化我的应用并根据以下条件开始。

If(UserloggedIn)
    start from homepage.xaml
else
    login.xaml

我知道它必须有一个非常简单和直接的方式,因为它是一个简单的场景。请让我知道。

3 个答案:

答案 0 :(得分:1)

您需要做的是使用自定义UriMapper,如果用户已登录则会进行实际检查,并在需要时调整导航。

Shawn Kendrot在他的博客上提供了一个完整的例子:http://visuallylocated.com/2012/06/default.aspx

答案 1 :(得分:0)

我认为你想要的是编辑App.xaml.cs文件。 See here for more details
您还可以在App.xaml.cs中执行其他一些有用的操作,例如checking if the app is a trial

答案 2 :(得分:0)

好的。我并不假装我的解决方案是最简单或最好的。就是这样,我已经在我的应用程序中实现了它。

首先,您创建一个登录页面。这将是您应用的第一页。因此,在WMAppManifest中,您设置应用程序的第一页:

<Tasks>
  <DefaultTask Name="_default" NavigationPage="LoginPage.xaml" />
</Tasks>

然后,在登录页面构造函数中,检查用户是否已登录:

if (yourLoginCheck)
{
  NavigationService.Navigate(new Uri(MainPage, UriKind.RelativeOrAbsolute))
}

因此,如果用户已登录,他将被导航到应用程序的主页面。

如果用户未登录,则应在登录页面UI上写入其凭据。然后,如果凭据检查没问题,他也将被导航到登录页面。

这是基本的想法。


然而,有一些问题应该解决。 主要的一个是,用户可以使用后退按钮并返回登录页面,这并不酷。

所以,我会推荐这个解决方案: 1)默认情况下,登录页面控件不可见。 2)您在登录页面覆盖OnNavigatedTo和OnBackKeyPress方法:

  protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (e.NavigationMode == NavigationMode.Back)
            {
                App.Quit();
            }
        }

        protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
        {
            App.Quit();
        }

3)如果用户已登录,他将被导航到主页面。 如果没有,请在页面上显示凭据控件。

结果,用户a)将无法看到任何凭据控件,如果他已登录。(导航只需要几次,但他仍然可以看到登录页面,这是'将是空白的)b)使用后退按钮将无法返回登录页面。 (而应用程序将关闭)

顺便说一句,退出mehtod是:

 public static void Quit()
        {
            if (Environment.OSVersion.Version.Major < 8)//try to load XNA assemblies (only working on WP7)
            {
                System.Reflection.Assembly asmb = System.Reflection.Assembly.Load("Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553");
                asmb = System.Reflection.Assembly.Load("Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553");
                Type type = asmb.GetType("Microsoft.Xna.Framework.Game");
                object obj = type.GetConstructor(new Type[] { }).Invoke(new object[] { });
                type.GetMethod("Exit").Invoke(obj, new object[] { });
            }
            else// => WP8
            {
                Type type = Application.Current.GetType();
                type.GetMethod("Terminate").Invoke(Application.Current, new object[] { });
            }
        }

这将使应用与windows-phone-7兼容。

链接,可能会有所帮助: About first page and quit issue