【问题标题】:Static resources in WPF in pluggable application可插拔应用程序中 WPF 中的静态资源
【发布时间】:2015-04-20 13:27:25
【问题描述】:

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

应用程序是这样工作的:

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

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

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

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

  1. 我看不到 IDE 中的情况
  2. 当我引用转换器时,IDE 会抱怨,但我无法知道它在运行时是否会工作。

如何让 StaticResources 被导入并同时在我的 IDE 中工作?

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

【问题讨论】:

    标签: c# wpf xaml plugins staticresource


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 是的,我确实希望设计选项卡能够“确认”样式并显示它们。我不希望对事物有一个完整的看法,但至少是颜色和字体。但是转换器的问题在于,即使 xaml 无法将它们作为静态资源找到,应用程序也会构建,但每个未解析的转换器都可能发生运行时错误(一个完全异常!)。
    猜你喜欢
    • 1970-01-01
    • 2013-10-23
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 2022-12-04
    • 2016-07-05
    • 2011-07-25
    相关资源
    最近更新 更多