私のユーザーインターフェイスは一般的にローカライズされた文字列を必要とするので、ビューモデルはビューが消費するすべての文字列を提供します。これには、ボタンのタイトルなどが含まれます。流暢なバインディングとUIButtonのタイトル
iOS側では、ボタンタイトルはSetTitleメソッドで設定します。
ビューモデルの文字列=>ボタンのタイトルマッピングを機能させるために、MvvmCrossはこれをうまく機能させるためにいくつかの魔法のバインディング変換を行います。
私のビューにはFooというUIButtonがあり、そのタイトルをView ModelのプロパティButtonLabelにマップしたいとします。
this.AddBindings(new Dictionary<object, string>() {
{Foo, "Title ButtonTitle"}
});
この同じ結合がMvvmCrossで流暢バインディングシステムを使用して設定することができます:例えば結合を設定するために、次の作品を知っているには?私はMvvmCrossソースから読んできましたが、私は結局バインディングコードを取得していません。
(実際にボタンがタイトルプロパティを持っていないので - それはのsetTitleメソッドを持っている)。この次は動作しません:
var set = this.CreateBindingSet<FooView, FooViewModel>();
set.Bind(Foo).For(b => b.Title).To(vm => vm.ButtonTitle);
set.Apply();
が流暢バインディングを使用して所望の結果を達成するためにそこに別の方法ですか?
ローカライズされた文字列については、ローカライズされた言語バインド機能を検討することもできます(https:// speakerdeckを参照)。com/cirrious/internationalization-in-mvvmcrossとhttp://slodge.blogspot.co.uk/2013/05/n21-internationalisation-i18n-n1-days.html – Stuart
すごく面白いです。あなたは私の質問に答えてきました。 – Frank
スチュアートも言及しています。「[このリンク](https://github.com/slodge/MvvmCross-Tutorials/blob/master/CustomBinding/CustomBinding.Droid/Setup.cs)を見ると、 'SpecialProperty'バインディングプロパティと 'HitThis'バインディングプロパティをシステムに追加する – Frank