0

在我的mainpage.xaml中,我检查了本地存储,如果 GetAccept 方法返回 false,我需要重定向到,Mentions.xaml但问题是 NavigationService 在此步骤中为 Null,因此我捕获了 nullreferenceexecption

        public MainPage()
        {
            CacheManager cache = new CacheManager();
            if (!cache.GetAccept())
            {
                NavigationService.Navigate(new Uri("/Views/AppBar/Mentions.xaml", UriKind.RelativeOrAbsolute));
            }
            InitializeComponent();
            }

我该如何做这个重定向?

4

3 回答 3

2

首先按照这个链接

NavigationService当前 Page 引发其 Load 事件时,将实例化,在您的解决方案中,您使用 Un initializedNavigationService这就是您的NullReference Exception. 因此,如果您手动执行页面的加载事件,那么您将获得 NavigationService 实例,以下代码是手动加载页面加载事件的片段,请在您的 pagesInitializeComponent()方法之后编写

 this.Loaded += (sender, event) =>
  {
      var navigationService = NavigationService;
      navigationService.Navigate(new Uri("/Views/AppBar/Mentions.xaml", UriKind.RelativeOrAbsolute));
  };
于 2012-11-20T11:31:11.950 回答
1

看来您输入了 += = (sender, events) 您需要删除额外的 =,如下所示。

public MainPage() {

    InitializeComponent();
    CacheManager cache = new CacheManager();
    if (!cache.GetAccept())
    {            this.Loaded += (sender, event) =>{
        NavigationService.Navigate(new Uri("/Views/AppBar/Mentions.xaml", UriKind.RelativeOrAbsolute)); };
    } 
于 2012-11-20T13:37:55.870 回答
0

您需要使语法正确。尝试复制我在下面放置的内容。

this.Loaded += 
(
    (sender, event) =>
    {
        NavigationService.Navigate(new Uri("/Views/AppBar/Mentions.xaml",
            UriKind.RelativeOrAbsolute))
    }
);

您缺少额外的括号,并且在其中添加了一个额外的分号。

于 2012-11-21T14:13:20.507 回答