LoginSignup
84
79

More than 3 years have passed since last update.

XAML 系(WPF、UWP、Xamarin.Forms)で Binding でハマらないようにするために気を付けていること

Posted at

XAML 系のプラットフォームで開発するときによくお世話になるデータバインディングですが、個人的に開発中にはまらないために気を付けていることを紹介しようと思います。

間違えないために

ハマらないために気を付けることは、Visual Studio に書いてもらうことです。これが一番大事です。人がプログラムを書くから間違えるので、なるべくツールに書いてもらいましょう。

データバインディングのパスでも同じで Visual Studio が DataContext の型を認識できるようにするとインテリセンスが効きます。Visual Studio に書いてもらうことが出来ます。

例えば Windows Template Studio で適当に新規作成したプロジェクトの DataTemplate の Binding でインテリセンス出してみるとこんな感じになりました。

image.png

こんな状態だと、心の目でバインドのパス書かないといけないですね。これはよくないです。
こうならないためにデザイナーに DataContext の型を教えてあげる必要があります。

DataTemplate の場合

DataTemplate の場合は DataType に型を指定するとデザイナーが型を認識してインテリセンスでプロパティ名を出してくれるようになります。

image.png

DataTemplate 以外の場合

d:DataContext で型を指定してやるとインテリセンスがきくようになります。

image.png

その他

ライブビジュアルツリーとライブプロパティエクスプローラー

一応中身見れる。

image.png

ReactiveProperty を使ってるときに間違えて .Value を忘れたものを見ると、こんな感じに見えます。ReactiveProperty の ToString の結果には型名がないのでちょっとわかりにくいですが…。

image.png

データバインディングのパスを間違えたら

それでも間違えることはあります。例えば Title とうつところを以下のように TiTle としてしまった場合…

image.png

最新の Visual Studio だとこんな風にエラーがあると教えてくれます。

image.png

前まではデバッグ実行時の出力ウィンドウに他のデバッグログに混じってこっそり出てたメッセージですが、これでとても見やすくなりました。

ただ、これは Xamarin.Forms には来てないかな?

まとめ

色々便利機能はありますが、基本的にプログラムは人がタイプすると間違えるのでインテリセンスを出すようにひと手間かけてから書くとハマる可能性が減ります。その対策をしたうえで、もしハマってしまった場合はデバッグ系の機能に頼りましょう。

以上です。

84
79
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
84
79