引用资源字典的正确方法是什么?

时间:2015-08-21 13:25:21

标签: wpf

在我的应用程序中,我倾向于使用相对路径引用我的资源字典,如下所示:

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Assets/ResourceDictionaries/SplashScreen.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

但是,对于我在我的应用程序中使用的其中一个库(Fluent),我需要的资源字典的引用是不同的(我相信它们被称为Pack URI或者什么?):

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Fluent;component/Themes/Office2013/Generic.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <Color x:Key="{x:Static Fluent:MetroColors.ThemeColorKey}">#60327A</Color>
        <vm:MainWindowViewModel x:Key="MainWindowViewModel" />
    </ResourceDictionary>
</Application.Resources>

我应该引用我的资源词典吗?

2 个答案:

答案 0 :(得分:1)

不同之处在于,URI用于访问嵌入资源,链接文件或松散文件。但是,URI可能看起来不同,具体取决于正在访问的资源类型。

“pack URI”中包含三个逗号,其设置与第一个URI不同,因为资源的是不同的类型。

有关详细信息,请参阅此MSDN文章。

答案 1 :(得分:1)

当资源与正在编译的程序集不同时,需要打包URI。

Fluent URI引用了Fluent程序集。 包://应用:,,, /的流利;组件/主题/ Office2013 / Generic.xaml

从理论上讲,你可以参考当前的集会,但除非我必须这样做,否则我从不使用它们,因为它们很难做到这一点!