如果我在一个项目中有一个ResourceDictionary,那么是否可以创建另一个项目来使用第一个项目中定义的资源?请注意,这两个项目都是WPF应用程序,而不是ControlLibraries。
谢谢!
谢谢!
当然可以,只要项目B有对项目A的引用。
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" />
</ResourceDictionary.MergedDictionaries>
那么你可以直接使用在 YourResourceFile.xaml 中定义的资源。
我发现我必须引用程序集本身而不是使用项目名称。我也不需要使用pack:///语法来使其工作。
在重复的问题上,这个答案指定了要使用的格式(我可以验证这个语法在.NET 4.0中有效):https://dev59.com/CnRC5IYBdhLWcg3wUvQS#10216253
具体来说(因为我总是忘记组件部分,认为这是某人正在使用的文件夹):
<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 指出我需要引用该程序集本身。