2015-08-21 48 views
2

在我的应用程序,我更倾向于使用相对路径来引用我的资源字典,像这样:什么是引用资源字典的正确方法?

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

但是,我在我的应用程序,(流利)的参考资源字典使用的图书馆之一我需要的是不同的(我相信他们是所谓的包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> 

是否有一个“正确”的方式,我要引用我的资源字典?

回答

1

如果资源与正在编译的资源不同,则需要包URI。

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

从理论上讲,你可以参考目前的组装,但除非我必须,因为他们是我从来没有使用它们这样的痛苦得到正确的!

+0

这对我很有用。谢谢。 :-) – Jake

1

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

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

欲了解更多信息,请参阅此MSDN文章。

+1

正在访问什么类型的资源?他们是否都是资源字典? – Jake

+1

对不起,我的答案很混乱。我已经改变说包URI是不同的,因为资源*源*是一个不同的类型。 –

+0

现在有道理。谢谢。 – Jake

相关问题