4

WPF アプリケーションに Managed Extensibility Framework を使用しています。アプリケーションに新しい機能を提供する、いわゆる拡張ポイントのインターフェースを定義しました。

これらの機能の一部は、特定のデータ テンプレートを使用してデータを表示する場合があります。これは、おそらく xaml リソース ファイルで指定する必要があるものです。

アプリケーションのコンパイル時に認識されないアセンブリで定義されたこれらの拡張ポイント (つまり、プレーン言語のプラグイン) の 1 つがあり、それでもプラグインのリソースをアプリケーションのリソースとマージしたい場合、どうすればよいでしょうか?

パック URI 表記法を使用してこれを行う方法を示すすべての例は、参照するアセンブリがコンパイル時にわかっている場合の解決策です。コンパイル時のアセンブリに慣れていない場合、どうすれば同じことを達成できますか?

4

2 に答える 2

4

コードまたは規則によって、マージするリソース ディクショナリの詳細を取得する必要があります。詳細は、リソース ディクショナリまたはResourceDictionaryインスタンス自体の名前である可能性があります。

後者の場合、インスタンスがあるので、それを-level (または適切なレベル) リソースResourceDictionaryにマージするだけです。Application

前者の場合、アセンブリの名前を使用して適切なパック URIを構築する必要があります (これは、 を呼び出すことによって拡張機能から取得できますextension.GetType().Assembly)。次に、パック URI に設定されたResourceDictionaryを作成します。Source最後に、それをリソース ツリーの適切なレベルにマージします。

于 2009-09-09T12:53:04.297 に答える
0

ここでは、MEF (この場合はデータ テンプレート) を使用して、リソース ディクショナリをパーツか​​らアプリケーション リソースに取り込む方法を示します。ビューのリソース ディクショナリをインポートするこの方法に基づいて、 SoapBox Coreを作成しました。

于 2009-09-10T02:01:56.800 に答える