我有一个项目,其中包含我希望在 FrameworkElement 之外使用的 xaml ResourceDictionary。资源字典将包含项目本地类的 DataTemplate 以避免污染 app.xaml(因为项目是一个 prism 模块,并不总是存在,具体取决于配置)。
所以,我有一个带有资源构建操作的 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"];
}
第二个示例失败,因为在本地程序集中找不到 /test.xaml。为什么我需要使用 "ReferencedAssembly;component/test.xaml" 访问它?
在这种情况下,本地程序集是指执行程序集还是代码/资源所属的程序集?
编辑:更新以反映实际问题。