19

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

谢谢!!

4

2 回答 2

31

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

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

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

于 2009-06-03T20:31:00.017 回答
11

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

于 2012-09-18T13:41:09.150 回答