【问题标题】:MvvmCross for MonoDroid - How to bind to Menu Item Click eventMonoDroid 的 MvvmCross - 如何绑定到菜单项单击事件
【发布时间】:2013-07-01 15:00:14
【问题描述】:

我有一个 MvvmCross PCL 和一个相关的 MonoDroid UI 项目(模式复制自 Stuart Lodge 的优秀 N+1 视频系列)。我想将 Action Bar 菜单项的单击绑定到 ViewModel 中的 ICommand。我见过this post,但 IMenuItem 似乎没有合适的属性来绑定。我知道 SetOnMenuItemClickListener 方法,但是(这无疑是我缺乏理解)不知道如何利用它来将 System.Windows.Input.ICommand 绑定到它。

另外,如果可能的话,是否可以在 MvxView 的 OnCreateOptionsMenu 方法中完成,因为这提供了操作栏菜单本身的句柄?

【问题讨论】:

    标签: xamarin.android xamarin mvvmcross


    【解决方案1】:

    我不认为你可以绑定它,因为 ActionBar 是在 XML 视图之外加载的东西。此外,它不会为单击项目公开任何 C# 类型的事件,因为它们是从菜单 xml 文件填充的。但是,当单击 MenuItem 时,您可以在 SetOnMenuItemClickListener 中执行命令。您可以简单地执行如下命令:

    ViewModel.MyAwesomeCommand.Execute();
    

    【讨论】:

    • 感谢您的解释。我看不到如何使用 .Execute() 方法,因为我的 ViewModel 构造函数使用 IoC 模式,例如
    • 感谢您的解释。我看不到如何使用 .Execute() 方法,因为我的 ViewModel 构造函数使用 IoC 模式,例如public NewJobViewModel(IDataService dataService, IMvxPictureChooserTask pictureChooserTask, IMvxFileStore fileStore) 并且我不能将我的 Command 方法设为静态,因为我需要 ViewModel 的实例来调用 Model 中的方法。还是我错过了什么?!
    • 请忽略我上面的评论,因为我发现 Mvx.Resolve 方法看起来像我需要采取的方法。我也遇到了这个问题,但可能是因为我缺乏理解。我有 posted another question relating to this
    • 实际上,忽略我上面的观点,我没有意识到 MvvmCross 提供了您刚刚转换为相关类型的 ViewModel 属性,从而使您可以直接访问 ViewModel 的属性和方法:@987654325 @
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多