[Xamarin.Forms][コントロール] BindablePropertyのデフォルトBindingModeを確認するには?
コントロールのBindablePropertyによって異なるBindingModeのデフォルト値
Xamarin.Formsの各種コントロール(LabelやEntryなど)はBindableObjectクラスを継承し、データバインディング可能なプロパティ(BindableProperty)としてText
などのプロパティを定義しています。
BindingModeのデフォルト値はBindablePropertyの定義時に設定されます。
ソースコードを見ましょう
コントロールのドキュメントを確認したのですが、BindingModeのデフォルト値については記載されていないようです。 そうなるとソースコードを見るしかなさそうです。
コントロールのソースコードを検索するには
「xamarin.forms コントロール名 github」でググればソースコードが検索できます。
以下は「xamarin.forms entry github」で検索した結果です。Entryコントロールのソースコードが検索できていることがわかります。
上記で検索できたのはmasterブランチのソースコードです。ご自身が現在使っているXamarin.Formsバージョンのソースコードを確認するには [2017/4/5 追記] 現在使っているXamarin.Formsバージョンのソースコードを確認するをご覧ください。
EntryコントロールのBindableProperty定義を見てみる
BindableProperty.Create
メソッドの5番目の引数でBindingMode.TwoWay
を設定しています。これがTextプロパティのデフォルトのBindingModeです。
LabelコントロールのBindableProperty定義を見てみる
同様の方法でLabelコントロールのTextPropertyの定義を見てみると、
こちらはBindableProperty.Create
でBindingModeを指定していません。
その場合はBindingMode.OneWay
がデフォルトのBindingModeになります。
[2017/4/5 追記] 現在使っているXamarin.Formsバージョンのソースコードを確認する
まず最初に、ご自身が使っているXamarin.Formsのバージョンを確認します。
以下はXamarin Studio Community バージョン 6.2.1(build 3)での確認手順です。
バージョンはpackages.configを開くか、パッケージを右クリックすることで確認できます。
自分が使っているバージョンが確認できたら、Xamarin.FormsリポジトリのReleasesの中から当該バージョンを検索します。
バージョンが見つかったら、Tagの部分をクリックします。
すると、対象のブランチに移動するのでこの中のソースコードを確認します。
例えば、Entryクラスを確認するには、Xamarin.Forms.Coreをクリックします。
最後に、対象の.csファイルをクリックすればソースコードが確認できます。
[2017/4/5 追記] Visual StudioやXamarin StudioのアセンブリブラウザーでもデフォルトのBindingModeを確認できる
コメントにて、Xamarin StudioのアセンブリブラウザーでもデフォルトのBindingModeを確認できると教えていただきました。 Xamarin.Formsは頻繁にアップデートされるため、ご自身が今使っているバージョンの実装を確実に確認できるという意味でアセンブリブラウザーで確認した方が良いかと思います。 また、Creating Mobile Apps with Xamarin.Forms Book Chapter 16 Data bindingの431ページにデフォルトのBindingModeがTwoWayのクラスとプロパティの一覧が載っていますが、これが全てとは書かれていないので実装を見るのが確実かと思います。
以下はXamarin Studio Community バージョン 6.2.1(build 3)のアセンブリブラウザーで確認する手順となります。
- 参照 > パッケージから > Xamarin.Forms.Coreをダブルクリックします。
-
アセンブリブラウザー タブが開いたら、可視性が「すべてのメンバー」、言語が「C#」になっていることを確認します。コントロール名を入力して検索を行い、対象のコントロールをダブルクリックします。
おわりに
コントロールのBindablePropertyによって異なるBindingModeのデフォルト値を確認する方法を記事にしてみました。 BindingModeのデフォルト値を確認したい場合にお役に立てば幸いです!