3

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

我想在选中某个特定项目时取消选择另一个项目。

我认为可以在 wp7 中使用 EventTrigger 来做到这一点,但用于 android 的 MvvmCross 似乎不支持此功能。

MvvmCross 是否仅限于 Button ?

在此先感谢您的帮助。

4

1 回答 1

3

CheckedChanged是一个EventHandler<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


因此,如果您有一个带有属性的 ViewModelIsSpecial

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

那么这个绑定应该可以工作:

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

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

于 2012-10-29T12:19:06.310 回答