かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

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

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

  • TemplatedParent
  • Self

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

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

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

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