かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

SilverlightでMVVMするときにたまに障害になること

Bindingがしょぼいっす。Silverlight 4になってかなり良くなって困る事が大分少なくなってきましたが、たま〜にひっかかっちゃいます。具体的に言うとRelativeSourceが弱いです。Silverlightで使えるのは以下の2つだけ。

  • TemplatedParent
  • Self

RelativeSource マークアップ拡張機能(Silverlight)

WPFではこれに加えてFindAncestorというのも使えます(もう1つ使えるのがあるけど使ったこと無いです・・・)
RelativeSource のマークアップ拡張機能(WPF)

このFindAncestorというのは便利で自分から親へ親へ辿って行って、指定の型にたどり着いたら、そいつをバインドのソースとして使えます。どういうときに使うかと言うと実際に使った例が以下のページにあります。
ListBoxの項目がダブルクリックされたらViewModelのCommand(or メソッド)を呼ぶ

今、ふとこれをSilverlightでやるとしたらどうやるんだろう??と思ってなんとなくエントリを起こしてみました。備忘録ということで。