>>160
UserControlに名前をつけてa)の方法でDataContextを参照したところうまくいきました。

本当はUserControlに名前をつけるとBlendにて警告が出るのでb)のAncestorTypeを使ったものを採用したかったのですが
SilverlightではSelfとTemplatedParentしか用意されていませんでした…。