ICommand Xamarin表格

时间:2018-05-19 09:18:29

标签: xamarin icommand

我有一个奇怪的问题,即获得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。

1 个答案:

答案 0 :(得分:0)

你永远不会实例化你的implementation 'com.github.markomilos:paginate:0.5.1'财产...... 如果我能给你2个评论:

  • 而不是使用声明到App.xaml.cs中的静态属性,可能更好的实现方法是将Navigation getter嵌入到特定的“服务”类中或直接嵌入到Command定义中:

    static MainNavigation
  • 我想指出的另一点是,你的Command看起来像是异步的。也许你已经知道了,但这是一个很好的异步命令实现,以避免应用程序崩溃:Asynchronous commands

我希望它可以帮到你。快乐的编码!