我刚刚从nukeation下载了一个示例项目,我发现了一些奇怪的东西。没有包含样式的XAML文件,但是有对特定资源的引用:
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ReuxablesLegacy;component/mercury.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
但是从我看到的这个ReuxablesLegacy是一个.dll文件而不是XAML。你如何创造这样的风格?将它们保存在这样的文件中似乎很方便。
答案 0 :(得分:1)
xaml文件被编译为baml并作为资源嵌入到它们的dll中,假设它们具有针对&#34; Page&#34;的xaml文件的典型构建操作。 WPF将在dll中使用的标准流是 AssemblyName .g.resources,其中 AssemblyName 应替换为程序集的名称。您可以使用.net反射器等反编译器在此资源流中达到峰值。
这是任何WPF应用程序的典型行为,只要您没有从默认的&#34; Page&#34;更改xaml文件的构建操作。值。您显示的资源字典的URI只是指向从&#34; mercury.xaml&#34;创建的另一个程序集中的嵌入式baml文件。
对于引用来自另一个程序集的资源,还有ComponentResourceKey机制,但是根据您所显示的内容,它们似乎只是直接转储一堆资源而不是使用组件资源键类型方法。