WPF中可插拔应用程序中的静态资源

时间:2015-04-20 13:27:26

标签: c# wpf xaml plugins staticresource

我目前正在研究企业WPF应用程序,我遇到了静态资源的一些问题:全局定义的样式和转换器。

应用程序以这种方式工作:

  • 有一个共享主机WPF应用程序,用作不同团队开发的组件的主机(它是一个PRISM应用程序,MEF用于导入插件)
  • 每个团队都可以通过创建新的dll添加插件,但不能修改其他团队的dll
  • 无法对主机应用程序进行任何更改

我的团队负责几个插件,我们需要添加更多功能,但我们想知道解决问题的最佳方法是什么。

在一个简单的(标准?)WPF应用程序中,我们将在App.xaml文件中定义样式,并且所有xaml UserControls或Windows都可以在设计时轻松地链接到它们,当然也可以在运行时链接到它们。

但是现在,虽然我设法让这些样式在运行时工作,但我不能让它们在设计时工作,这会导致两个主要问题:

  1. 我无法看到IDE中的情况如何
  2. 当我引用转换器时,IDE会抱怨,但我无法知道它在运行时是否有效。
  3. 如何导入StaticResources,同时在我的IDE中工作?

    如果不可能,我可以采取哪些其他策略来克服这些问题?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望使用Visual Studio中的“设计”选项卡查看样式更改并检查WPF应用程序的外观。

如果是这种情况,我会让您失望,但我还没有遇到任何WPF开发人员使用'Design'而不是'XAML'视图在更高级的应用程序中进行更改等。不幸的是,“设计”视图有许多缺陷,没有正确显示视图,静态资源转换器存在问题,更重要的是它总是资源匮乏。

我们使用WPF应用程序的方式是使用Snoop实用程序来构建它们并检查问题和更改,以调查应用程序,绑定错误,样式问题等。我从未见过如何使用在“设计”视图中构建,没有很多缺陷,黑客和性能问题。

更重要的是,你应该编写一个虚假的主机应用程序,这样你就可以运行你的插件而无需运行主应用程序(如果这对你来说是个问题)