如何在启动时更改起始页?

时间:2013-10-03 21:36:06

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

我的应用程序目前在启动时转到MainPage.xaml(我不知道它在哪里配置)。

我希望能够在某些条件下从另一个页面开始。我想我可以将此代码添加到Application_Launching()页面中的App.xaml.cs

NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative));

但App.xaml.cs中没有NavigationService

如果foo == true

,如何使用其他页面启动应用程序

3 个答案:

答案 0 :(得分:4)

更改App.Xaml.cs中的起始页:

private void Application_Launching(object sender, LaunchingEventArgs e)
{

        Uri nUri = new Uri("/SecondPage.xaml", UriKind.Relative);
        ((App)Application.Current).RootFrame.Navigate(nUri);

}

Property\WMAppManifest.xml文件

中设置静态启动页面
<DefaultTask  Name ="_default" NavigationPage="SecondPage.xaml"/>

修改

试一试:

    private void Application_Launching(object sender, LaunchingEventArgs e)
    {
        Uri nUri = new Uri("/GamePage.xaml", UriKind.Relative);
        RootFrame.Navigate(nUri);
    }

并在Property\WMAppManifest.xml清除NavigationPage:

<DefaultTask  Name ="_default" NavigationPage=""/>

答案 1 :(得分:3)

根据条件,这是一种导航方式:

在App.xaml.cs的构造函数中添加:

RootFrame.Navigating+= RootFrameOnNavigating;

然后像这样定义RootFrameOnNavigating:

    private bool firstNavigation = true;
    private void RootFrameOnNavigating(object sender, NavigatingCancelEventArgs navigatingCancelEventArgs)
    {

        //by defaullt stringOfPageNameSetInWMAppManifest is /MainPage.xaml
        if (firstNavigation && navigatingCancelEventArgs.Uri.ToString().Contains(stringOfPageNameSetInWMAppManifest))
        {
            if (foo == true)
            {
                //Cancel navigation to stringOfPageNameSetInWMAppManifest
                navigatingCancelEventArgs.Cancel = true;

                //Use dispatcher to do the navigation after the current navigation has been canceled
                RootFrame.Dispatcher.BeginInvoke(() =>
                {

                    RootFrame.Navigate(new Uri("/Page1.xaml", UriKind.Relative));
                });
            }
        firstNavigation = false;
    }

另一种方法是使用UriMapper重新定义导航到某个页面时导航到的内容。

答案 2 :(得分:0)

在启动时更改 MainPage 是当 App 类的新实例被启动时....在 App.xaml.cs 页面中,应用程序应首先从 ctor 内启动一个新的 AppShell 组件。如果不是,则 Shell.Current 对象将始终为空;但是,您可以使用 OnStart 方法,因为我们可以使用它,然后在那里导航到正确的登录页面或其他任何...

    public App()
    {
        InitializeComponent();
        XF.Material.Forms.Material.Init(this);
        DependencyService.Register<MockDataStore>();
        //MainPage = new AppShell();
        MainPage = new AppShell();
        //GoToLoginPageOnStart();
    }


    protected override void OnStart()
    {
        // Handle when your app starts
        Shell.Current.GoToAsync("//LoginPage");
       

    }