是否可以在多个项目之间共享ResourceDictionary文件?

Mar*_*ter 18 c# wpf xaml resourcedictionary

如果我在一个项目中有一个ResourceDictionary,是否可以创建另一个使用第一个项目中定义的资源的项目?请注意,这两个项目都是WPF应用程序,而不是ControlLibraries.

谢谢!!

use*_*889 30

是的,当然这是可能的,只要项目B提到项目A.

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" />
</ResourceDictionary.MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用YourResourceFile.xaml中定义的资源.


Dav*_*dle 11

我发现我必须引用程序集本身,而不是使用项目名称.我也不需要使用pack:///语法来实现这一点.

关于重复问题的答案指定了要使用的格式(我可以验证此语法在.NET 4.0中有效):https: //stackoverflow.com/a/10216253/1260563

具体来说(因为我总是忘记组件部分认为它是某个人正在使用的文件夹):

<ResourceDictionary.MergedDictionaries>
   <ResourceDictionary Source="/<YourAssemblyName>;component/<YourReferencedFileHere.xaml>" />
</ResourceDictionary.MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)

因此,如果您在根级别有一个程序集Abc.Def.dll和该DLL中名为Xyz.xaml的文件,您将使用:

<ResourceDictionary.MergedDictionaries>
   <ResourceDictionary Source="/Abc.Def;component/Xyz.xaml" />
</ResourceDictionary.MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)

注意:Resharper 7指出我必须引用程序集本身.