3

monodroid CheckBox から CheckedChange をコマンドにバインドしようとしていますが、エラーが発生します。

特定のアイテムがチェックされているときに、別のアイテムの選択を解除したい。

wp7ではEventTriggerでできると思いますが、MvvmCross for androidはこの機能に対応していないようです。

MvvmCross はボタンのみに限定されていますか?

よろしくお願いします。

4

1 に答える 1

3

CheckedChangedであるEventHandler<CompoundButton.CheckedChangeEventArgs>ため、MvvmCross が自動的に認識するデリゲート型の 1 つではありません。


ただし、これにはカスタムバインディングが用意されています...

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'} 

これは、チェックボックス、スイッチ、または独自のコンパウンドなど、どのコンパウンド ボタンでも機能するはずです...

于 2012-10-29T12:19:06.310 に答える