FrameworkElement の外部で使用したい xaml ResourceDictionary を含むプロジェクトがあります。リソース ディクショナリには、app.xaml の汚染を避けるために、プロジェクトにローカルなクラスの DataTemplate が含まれます (プロジェクトはプリズム モジュールであり、構成によっては常に存在するとは限りません)。
したがって、リソース ビルド アクションを含む test.xaml ファイルがあります。
これは、TestObject クラスの DataTemplate を提供するためのものです。
TestObject クラスには GetTemplate() メソッドがあります
以下の作品:
DataTemplate GetTemplate()
{
Uri uri = new Uri("MyProject;component/test.xaml", UriKind.Relative);
var dict = new ResourceDictionary { Source = uri};
return (DataTemplate)dict["TestObjectDataTemplate"];
}
uri を ResourceDictionary.Source プロパティに割り当てると、例外がスローされます。
DataTemplate GetTemplate()
{
Uri uri = new Uri("/test.xaml", UriKind.Relative);
var dict = new ResourceDictionary { Source = uri};
return (DataTemplate)dict["TestObjectDataTemplate"];
}
2 番目の例は、ローカル アセンブリで /test.xaml が見つからないため失敗します。"ReferencedAssembly;component/test.xaml" でアクセスする必要があるのはなぜですか?
この場合、ローカル アセンブリは、実行中のアセンブリまたはコード/リソースが含まれるアセンブリを意味しますか?
編集:実際の問題を反映するように更新されました。