我遇到了一个奇怪的问题,那就是获取null异常。我创建了实现ICommand接口的类,我有两个方法。
public void Execute(object parameter)
{
NavigateAsync();
}
private async void NavigateAsync()
{
await App.MainNavigation.PushAsync(new Pages.SettingsPage());
}当NavigateAsync()为exectude时,我的MainNavigation始终为null,即使我可以看到Execute中的参数已设置。
在我的App.xaml.cs文件中,我创建了公共静态INavigation MainNavigation { get;set;}
public partial class App : Application
{
public static ViewModels.MainViewModel ViewModel { get; set; }
public static INavigation MainNavigation { get; set; }
public App ()
{
InitializeComponent();
MainPage = new NavigationPage(new Paperboy.MainPage());
}
protected override void OnStart ()
{
// Handle when your app starts
}
protected override void OnSleep ()
{
// Handle when your app sleeps
}
protected override void OnResume ()
{
// Handle when your app resumes
}
}单击图标时,我可以看到命令已执行,但NavigateAsync()中的App.MainNavigation为空。因此,命令不会对SettingsPage执行PushAsync。
发布于 2018-05-21 03:35:34
你从来没有实例化你的static MainNavigation属性...如果我可以给你两句话:
公共类MyCommand : ICommand { ... //导航getter //这个属性有更好的地方,但//比app.xaml.cs私有INavigation MainNavigation { get => Application.Current?.MainPage?.Navigation;} public void Execute(object参数){ NavigateAsync();} private async void NavigateAsync() { try { await MainNavigation?.PushAsync( Pages.SettingsPage());} catch(){ ... }
我希望它能帮助你。祝你编码愉快!
https://stackoverflow.com/questions/50423692
复制相似问题