none
关于在MainPage页面初始化前导航到其他页面 RRS feed

  • 问题

  • 程序初始化后是导航到MainPage.xaml页面,但是我想加个if判断,如果判断为true,想导航到其他页面,

    public MainPage()
            {
                InitializeComponent();
                if(true)
               {
                  NavigationService.Navigate(new Uri("/back.xaml", UriKind.Relative));
               }
            }
    现在问题是会报异常,不知道怎么处理了

    2014年7月27日 14:12

答案

  • 你好。

    应该在App.xaml.cs 中 InitializePhoneApplication()方法中加入RootFrame的Navigating事件处理:

    private void InitializePhoneApplication()
    {
        if (phoneApplicationInitialized)
            return;
    
        RootFrame = new TransitionFrame();
        RootFrame.Navigated += CompleteInitializePhoneApplication;
    
        RootFrame.NavigationFailed += RootFrame_NavigationFailed;
        RootFrame.Navigating += new NavigatingCancelEventHandler(RootFrame_Navigating);//加上Navigating的事件
        phoneApplicationInitialized = true;
    }

    Navigating事件处理:

    void RootFrame_Navigating(object sender, NavigatingCancelEventArgs e)
    {
        if (e.Uri.ToString().Contains("MainPage.xaml"))
        {
            // 加入你的判断条件
            if (youCondition)
            {
                e.Cancel = true; //取消事件
                string uriString = "/AnotherPage.xaml";
                var ur = new Uri(uriString, UriKind.Relative);
                RootFrame.Dispatcher.BeginInvoke(delegate
                {
                    this.RootFrame.Navigate(ur);
                });
            }
        }
    }

    这里是最简单的处理,也就是当导航到MainPage时,判断你的条件是否成立,如成立,则跳转到其他页面。

    2014年7月28日 1:14