可以像这样直接绑定按钮操作:
var set = this.CreateBindingSet<...
set.Bind(button).To(x => x.Go);
但是有关UITapGestureRecognizer的内容,例如。我该如何以这种优雅的方式绑定它(它的点击动作)?
谢谢!
答案 0 :(得分:17)
如果您愿意,可以自己添加。
e.g。
之类的东西 public class TapBehaviour
{
public ICommand Command { get;set; }
public TapBehaviour(UIView view)
{
var tap = new UITapGestureRecognizer(() =>
{
var command = Command;
if (command != null)
command.Execute(null);
});
view.AddGestureRecognizer(tap);
}
}
public static class BehaviourExtensions
{
public static TapBehaviour Tap(this UIView view)
{
return new TapBehaviour(view);
}
}
// binding
set.Bind(label.Tap()).For(tap => tap.Command).To(x => x.Go);
我认为这样可行 - 但这是在这里编码!
高级&GT;如果您愿意,还可以通过为TapBehaviour注册默认绑定属性来删除For(tap => tap.Command)
部分的需要 - 要覆盖Setup.FillBindingNames
并使用:
registry.AddOrOverwrite(typeof (TapBehaviour), "Command");
此后,绑定可能是:
set.Bind(label.Tap()).To(x => x.Go);
答案 1 :(得分:16)
仅供参考。较新版本的MvvMcross包含一个开箱即用的UIView方法扩展(参见MvxTapGestureRecognizerBehaviour),可用于绑定轻击手势:
using Cirrious.MvvmCross.Binding.Touch.Views.Gestures;
// in this case "Photo" is an MvxImageView
set.Bind(Photo.Tap()).For(tap => tap.Command).To("OpenImage");