我有一个奇怪的问题,即获得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文件中,我创建了public static INavigation MainNavigation {get;组; }
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为null。因此命令不会将PushAsync执行到SettingsPage。
答案 0 :(得分:0)
你永远不会实例化你的implementation 'com.github.markomilos:paginate:0.5.1'
财产......
如果我能给你2个评论:
而不是使用声明到App.xaml.cs中的静态属性,可能更好的实现方法是将Navigation getter嵌入到特定的“服务”类中或直接嵌入到Command定义中:
static MainNavigation
我想指出的另一点是,你的Command看起来像是异步的。也许你已经知道了,但这是一个很好的异步命令实现,以避免应用程序崩溃:Asynchronous commands
我希望它可以帮到你。快乐的编码!