2015-08-21 50 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

相關問題