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

时间:2009-06-03 20:03:03

标签: c# wpf xaml resourcedictionary

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

谢谢!

2 个答案:

答案 0 :(得分:30)

是的,当然,只要项目B引用了项目A,这是可能的。

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" />
</ResourceDictionary.MergedDictionaries>

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

答案 1 :(得分:10)

我发现我必须引用程序集本身而不是使用项目名称。我也不需要使用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指出我必须引用程序集本身。