かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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

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

  • TemplatedParent
  • Self

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

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

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

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