如果我在一个项目中有一个ResourceDictionary,是否可以创建另一个使用第一个项目中定义的资源的项目?请注意,这两个项目都是WPF应用程序,而不是ControlLibraries。
谢谢!
答案 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指出我必须引用程序集本身。