在我的mainpage.xaml
中,我检查localstorage,如果方法GetAccept返回false,我需要重定向到Mentions.xaml
,但问题是导航服务在此步骤中是空的,所以我捕获nullreferenceexecption < / p>
public MainPage()
{
CacheManager cache = new CacheManager();
if (!cache.GetAccept())
{
NavigationService.Navigate(new Uri("/Views/AppBar/Mentions.xaml", UriKind.RelativeOrAbsolute));
}
InitializeComponent();
}
如何进行此重定向?
答案 0 :(得分:2)
首先关注此Link
当当前页面引发其加载事件时,NavigationService
会被实例化,在您的解决方案中,您使用的是未初始化的NavigationService
,这是NullReference Exception
的原因。因此,如果您手动执行页面的加载事件,那么您将获得NavigationService实例,以下代码是用于手动加载页面加载事件的代码段,在您的页面InitializeComponent()
方法之后立即写入
this.Loaded += (sender, event) =>
{
var navigationService = NavigationService;
navigationService.Navigate(new Uri("/Views/AppBar/Mentions.xaml", UriKind.RelativeOrAbsolute));
};
答案 1 :(得分:1)
看来你输了+ = =(发件人,事件)你需要删除额外的=,就像我在下面做的那样。
public MainPage() {
InitializeComponent();
CacheManager cache = new CacheManager();
if (!cache.GetAccept())
{ this.Loaded += (sender, event) =>{
NavigationService.Navigate(new Uri("/Views/AppBar/Mentions.xaml", UriKind.RelativeOrAbsolute)); };
}
答案 2 :(得分:0)
您需要正确的语法。尝试复制下面的内容。
this.Loaded +=
(
(sender, event) =>
{
NavigationService.Navigate(new Uri("/Views/AppBar/Mentions.xaml",
UriKind.RelativeOrAbsolute))
}
);
你错过了额外的括号,并且你有一个额外的分号。