如何在复合WPF应用程序中共享ResourceDictionaries?

时间:2016-03-23 11:50:55

标签: wpf inversion-of-control unity-container prism resourcedictionary

使用Unity Ioc(不带Prism)构建复合WPF应用程序。 我的所有资源(样式,模板,图片)存储在一个模块(基础结构)中,并在Shell模块的App.xaml中合并。

在其他模块中,我将其用作StaticResource。当我启动项目时,一切正常,但在VisualStudio Designer中我无法看到我的样式:'资源 xyz 无法解析'。

如何在设计时配置VS以查看所有资源?

可能的解决方案:

  1. 我可以合并每个模块中的所有内容,但是每个资源都会加载多个。我也可以编写自己的ResourceDictionary实现(比如:here),但我过去常常合并资源 - 我会避免这种情况。

  2. 我找到了一个复合应用的Prism参考解决方案。我不知道如何,但它没有自定义ResourceDictionary并且没有在每个模块中合并它。 VS Designer显示所有内容,但XAML编辑器仍然说“资源 xyz 无法解析” 问:这是棱镜的一个特点吗?或者隐藏了一些配置?

1 个答案:

答案 0 :(得分:0)

解决方案很简单(Prism无法做到)。

所有资源都应在Shell模块中定义(而不是在Infrastructure模块中)。 然后应该在Shell模块项目中引用所有模块。

无需合并每个模块中的资源。 每个模块只知道高级模块,只有shell知道每个人。