10 進数を UITextField にバインドしても、"." を入れることはできません。で、「1.」と入力すると、ソースへのプッシュによってそれが取り除かれます。MakeSafeValue はそれを 10 進数に変換し、「.」なしで読み戻され、入力されたテキストを上書きします。これは、keyup と onblur の問題のように思えますが、多くのバインディング フレームワークでオーバーライドできます。
代わりにビュー モデルに文字列をバインドできることはわかっていますが、EditingChanged の代わりに EditingDidEnd を処理するほうがよいようです。そうすれば、ShouldEndEditing をインターセプトして有効性を確認できます。
MvvmCross 実装をオーバーライドするには、バインディングをどこに登録しますか? Setup.FillTargetFactories に追加しようとしましたが、MvvmCross がある MVXTouchBindingBuilder.FillTargetFactories の前に呼び出されます。
私が持っている FillTargetFactories で、別のプロパティ名を試しました:
registry.RegisterPropertyInfoBindingFactory(typeof (UITextFieldTextDidEndTargetBinding), typeof (UITextField), "DidEndText");
しかし、バインドすると機能しません。
set.Bind(textField).For("DidEndText").To(vm => vm.GMoney);
ターゲットにそのプロパティがない場合、MvxPropertyInfoTargetBindingFactory.CreateBinding は機能しないように見えます = 理にかなっています。これにより、MvxTargetBinding から始めてカスタム バインディングを作成する必要がありますか? MvxPropertyInfoTargetBinding のほとんどのコードを再作成するのは嫌いです。
それで、質問は...
- 私のデフォルトのUITextFieldバインディングをオーバーライドする構文/場所は何ですか?
- Bind Syntax を使用して Text に別のバインドを指定するにはどうすればよいですか?
前もって感謝します。