如何在ReactiveUI for iOS中绑定按钮单击命令

时间:2014-03-25 04:56:15

标签: mvvm xamarin reactiveui

我正在尝试为一个Xamarin.iOS项目学习ReactiveUI,我仍然坚持应该是一个简单的任务。我无法将按钮单击绑定到ReactiveCommand,就像我在随附的Xamarin.Android项目中一样。以下是可以正常使用的Android代码:

this.BindCommand (ViewModel, x => x.ClickMe, view => view._button);

这是iOS中使用的相同模式:

this.BindCommand (ViewModel, x => x.ClickMe, view => view.GetForecastButton);

但是,在iOS中我收到以下警告:

“找不到MonoTouch.UIKit.UIButton的命令活页夹”

有谁知道我做错了什么?令人惊讶的是,我已经查找了几十个ReactiveUI iOS示例,我仍然没有找到一个在应用程序中只有一个按钮。它们都可以执行类似于绑定属性的show text或者从ViewModel中的集合中显示UITableView。我确信有一个更完整的iOS示例,如果有人知道一个,请在您的答案中包含。非常感谢。

1 个答案:

答案 0 :(得分:2)

您正确地执行了所有操作,但我相信您会被影响ReactiveUI的Xamarin.iOS错误所控制,Type.GetType无法加载程序集。将其粘贴到AppDelegate中:

https://github.com/paulcbetts/starter-mobile/blob/master/Starter-iOS/AppDelegate.cs#L35

        // NB: GrossHackAlertTiem™:
        //
        // Monotouch appears to not load assemblies when you request them 
        // via Type.GetType, unlike every other platform (even 
        // Xamarin.Android). So, we've got to manually do what RxUI and 
        // Akavache would normally do for us
        var r = RxApp.MutableResolver;
        (new ReactiveUI.Cocoa.Registrations()).Register((f,t) => r.Register(f, t));
        (new ReactiveUI.Mobile.Registrations()).Register((f,t) => r.Register(f, t));