MvvmCross vnext:将CheckBox CheckedChange事件发送到monodroid命令

时间:2012-10-29 11:18:21

标签: windows-phone-7 xamarin.ios xamarin.android xamarin mvvmcross

我正在尝试将CheckedChange从monodroid CheckBox绑定到命令,但是我收到错误。

我想在选中某个项目时取消选择其他项目。

我认为可以在wp7中使用EventTrigger,但是MvvmCross for android似乎不支持此功能。

MvvmCross仅限于Button吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

CheckedChangedEventHandler<CompoundButton.CheckedChangeEventArgs>因此它不是MvvmCross自动知道的委托类型之一。


但是,有一个自定义绑定...

https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Binding.Droid/Target/MvxCompoundButtonCheckedTargetBinding.cs

此自定义绑定应使用以下方式注册:

registry.RegisterFactory(new MvxSimplePropertyInfoTargetBindingFactory(typeof(MvxCompoundButtonCheckedTargetBinding), typeof(CompoundButton), "Checked"));
https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Binding.Droid/MvxAndroidBindingBuilder.cs

中的


因此,如果您的ViewModel具有属性IsSpecial

private bool _isSpecial;
public bool IsSpecial
{
   get { return _isSpecial; }
   set 
   {
      _isSpecial = value;
       RaisePropertyChanged(() => IsSpecial);
       // your custom code here
   }
}

然后这个绑定应该有效:

  'Checked':{'Path':'IsSpecial'} 

这适用于任何CompoundButton - CheckBox,Switch或您自己的化合物......