样式为dll文件?

时间:2016-05-12 19:43:11

标签: .net wpf xaml

我刚刚从nukeation下载了一个示例项目,我发现了一些奇怪的东西。没有包含样式的XAML文件,但是有对特定资源的引用:

<ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/ReuxablesLegacy;component/mercury.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

但是从我看到的这个ReuxablesLegacy是一个.dll文件而不是XAML。你如何创造这样的风格?将它们保存在这样的文件中似乎很方便。

1 个答案:

答案 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机制,但是根据您所显示的内容,它们似乎只是直接转储一堆资源而不是使用组件资源键类型方法。