如果我在一个项目中有一个 ResourceDictionary,是否可以创建另一个使用第一个项目中定义的资源的项目?请注意,这两个项目都是 WPF 应用程序,而不是 ControlLibraries。
谢谢!!
如果我在一个项目中有一个 ResourceDictionary,是否可以创建另一个使用第一个项目中定义的资源的项目?请注意,这两个项目都是 WPF 应用程序,而不是 ControlLibraries。
谢谢!!
是的,当然可以,只要项目 B 引用了项目 A。
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" />
</ResourceDictionary.MergedDictionaries>
然后,您可以只使用 YourResourceFile.xaml 中定义的资源。
我发现我必须引用程序集本身而不是使用项目名称。我也不需要使用 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 指出我必须引用程序集本身。