10

MarkupExtensionXAMLでバインディングを指定するためのより良い方法を提供することで、自分の生活を楽にするカスタムを作成しようとしています。ただし、が使用されているファイルを表すオブジェクトにアクセスできる方法があるかどうかを知りたいですMarkupExtension

言い換えるとUserControl、プログラムのデータモデルの特定の表現を定義するがあるとします。このコントロールには、グリッド、境界線、一般的なレイアウトなどの視覚的な要素がたくさんあります。MarkupExtensionこの中のある要素の特定のプロパティでmyを使用する場合、それがどのタイプであるかを知らずUserControlに、のインスタンスにアクセスしたいと思います(リフレクションを使用する予定です)。UserControl

これは可能ですか?

4

1 に答える 1

16

.NET 4.0では、IRootObjectProvider機能が追加されましたが、残念ながら、以前のバージョンでは不可能でした。.NET 4.0を使用している場合は、次の操作を実行できます。

public override object ProvideValue(IServiceProvider serviceProvider)
{
    var rootObjectProvider = serviceProvider.GetService(typeof(IRootObjectProvider)) as IRootObjectProvider;
    var root = rootObjectProvider.RootObject;
    // do whatever you need to do here
}
于 2010-06-15T17:46:44.007 に答える