如果我在一個項目中有ResourceDictionary,是否可以創建另一個使用第一個項目中定義的資源的項目?請注意,這兩個項目都是WPF應用程序,而不是ControlLibraries。是否可以在多個項目之間共享ResourceDictionary文件?
謝謝!
如果我在一個項目中有ResourceDictionary,是否可以創建另一個使用第一個項目中定義的資源的項目?請注意,這兩個項目都是WPF應用程序,而不是ControlLibraries。是否可以在多個項目之間共享ResourceDictionary文件?
謝謝!
是的,當然這是可能的,只要項目B有一個參考項目A.
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" />
</ResourceDictionary.MergedDictionaries>
然後,你可以使用YourResourceFile.xaml定義的資源。
哦,快點。我正在嘗試一下!謝謝!! – Pwninstein 2009-06-03 20:32:41
我不知道這個 - 很酷的把戲! – 2009-06-04 14:46:34
如果項目不共享參考,會發生什麼情況?在我的情況下,我使用PRISM並在Shell中聲明樣式。我希望能夠重用一些定義的顏色。 – R4cOON 2009-07-31 13:07:59
我發現我不得不引用程序集本身而不使用項目名稱。我也不需要使用pack:///語法來使其工作。
這個答案的重複問題,指定要使用的格式(我可以驗證這句法工作在.NET 4.0): https://stackoverflow.com/a/10216253/1260563
具體(因爲我總是忘了組成部分,認爲它是一個文件夾的人使用):
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/<YourAssemblyName>;component/<YourReferencedFileHere.xaml>" />
</ResourceDictionary.MergedDictionaries>
所以,如果你有一個裝配Abc.Def.dll並在DLL在根級別稱爲Xyz.xaml一個文件,你可以使用:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Abc.Def;component/Xyz.xaml" />
</ResourceDictionary.MergedDictionaries>
注意:Resharper 7指出我必須引用程序集本身。
感謝您提供具體示例並指出路徑組件部分的必要性。這比我偶然發現的其他六種解決方案更有幫助。 – 2016-07-09 12:27:39
重複? http://stackoverflow.com/questions/338056/wpf-resource-dictionary-in-a-separate-assembly – 2012-01-25 19:52:09