Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 初始化WP8应用程序_C#_Windows Phone 8 - Fatal编程技术网

C# 初始化WP8应用程序

C# 初始化WP8应用程序,c#,windows-phone-8,C#,Windows Phone 8,我想初始化我的应用程序并根据以下条件启动 If(UserloggedIn) start from homepage.xaml else login.xaml 我知道必须有一个非常简单和直接的方法,因为这是一个简单的场景。请让我知道路。我想你想要的是编辑App.xaml.cs文件 您还可以在App.xaml.cs中执行一些其他有用的操作,您需要做的是使用自定义UriMapper,它将实际检查用户是否登录,并根据需要调整导航 肖恩·肯德罗特的博客上有一个完整的例子:好的。我不会假装

我想初始化我的应用程序并根据以下条件启动

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

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

我想你想要的是编辑
App.xaml.cs
文件

您还可以在
App.xaml.cs

中执行一些其他有用的操作,您需要做的是使用自定义
UriMapper
,它将实际检查用户是否登录,并根据需要调整导航


肖恩·肯德罗特的博客上有一个完整的例子:

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

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

<Tasks>
  <DefaultTask Name="_default" NavigationPage="LoginPage.xaml" />
</Tasks>
所以,如果用户登录,他将被导航到应用程序的主页面

如果用户未登录,则应在登录页面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)无法使用“后退”按钮返回登录页面。(应用程序将关闭)

顺便说一句,退出方法是:

 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[] { });
            }
        }
publicstaticvoidquit()
{
if(Environment.OSVersion.Version.Major<8)//尝试加载XNA程序集(仅在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=asmb.GetType(“Microsoft.Xna.Framework.Game”);
object obj=type.GetConstructor(新类型[]{}).Invoke(新对象[]{});
type.GetMethod(“Exit”).Invoke(obj,新对象[]{});
}
else/=>WP8
{
Type Type=Application.Current.GetType();
type.GetMethod(“Terminate”).Invoke(Application.Current,新对象[]{});
}
}
这将使应用程序与windows-phone-7兼容

以下链接可能会有所帮助:

事实上,这并不像你想象的那么简单)。首先,我应该问:如果用户已登录,如何检查。发送web请求以检查凭据(我认为这是最有可能的解决方案)?第二,在windows phone中实现登录页面通常会遇到通过Microsoft认证的问题(我保证,应用程序中的后退按钮使用会有问题),因此您需要提供更多关于您的实现的信息。不,您的技术性很强:p。我将userdetail保存在我的isolatedstorage中(只有userid和name;),因此没有技术挑战。我只需要检查isolatedstorage中可用的用户详细信息,然后从主页初始化,否则将显示我的应用程序的登录屏幕,该屏幕将与我的服务器通信并提供用户ID。我建议使用UriMapper,这样就无需清除backbackback,也无需进行不必要的页面导航,这会降低应用程序的速度。下面有一个答案表明了这一点
 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[] { });
            }
        }