MVVMCross,Xamarin.iOSのBindingするプロパティの指定方法

MVVM CrossのStarter kitをインストールしたときやたいていの解説サイト、サンプルコードではXamarin.iOSのバインドコードはこのように記述されています。

%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3

コードを普通に読んでみるとLabelとVMのHelloプロパティをバインドさせてることはわかるのですがLabelはUIコントロールなので何かしらのプロパティとバインドさせなければいけません。

この場合バインドしたいものはおそらくTextプロパティなのですが、じゃあどこで指定するのかとなったときに???となってしばらく悩んでました。

すると優しき先人の方(@ticktackmobile)曰く、デフォルトでバインドするプロパティがあるとのこと。そしてLabelのデフォルトバインドプロパティはTextだからバインドできているらしい。

 

なるほどという感じで公式サイトを見てみるとちっちゃく記述されてました。

ここで気になってくるのはText以外のプロパティを指定したいときですが、そちらについてもご回答いただけました。圧倒的感謝!!

ということで以下のコードのLabelとTextFieldはどちらもTextプロパティをバインドしているとのこと。プロパティを自分で指定したいときはForを使いましょう。

var set = this.CreateBindingSet<FirstView, Core.ViewModels.FirstViewModel>();
//LabelのデフォルトバインドプロパティであるTextがバインドされる
set.Bind(Label).To(vm => vm.Hello);
//直接バインドするプロパティを指定するにはForを使う
set.Bind(TextField).For("Text").To(vm => vm.Hello);
set.Apply();

やっぱりまだXamarinは日本語の文献が少ないからか、経験値が作業スピードに大きく影響してるきがします。

これからXamarinする人はXamarin詳しい人をフォローしよう!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください