我有一个 WPF 应用程序,我添加了自己的 Sub Main() 来进行一些处理并在主窗口加载之前显示动画启动屏幕。完成这项工作的部分过程涉及将 Application.xaml 上的 Build Action 更改为“Page”而不是“ApplicationDefinition”。
一切在运行时运行良好,但在 VS 设计器中,我的主窗口在其表面加载用户控件时出现问题。更深入地看,用户控件似乎无法找到位于 Application.xaml 资源中的样式资源 - 至少在设计时是这样。在运行时没有问题。
我假设为 Application.xaml 的构建操作从“AppicationDefinition”切换到“页面”以某种方式断开了应用程序在设计时加载资源的能力。
这里有一篇文章描述了我遇到的相同问题,但该解决方案被错误地标记为答案,因为它显然没有解决设计时问题。另一个人回答,但该解决方案是简单地在整个地方实例化资源,而不是在一个位置 - 这不是我想要的。
我在这里找到了 Josh Smith 的一篇文章,该文章似乎很有希望在设计时加载应用程序时执行您自己的代码,但我不知道在“TODO”部分代码之后添加什么。我在想以某种方式在我的 Application 类上调用 Initialize 组件,但是在设计时没有实例化......对吗?
'In AssemblyInfo.vb
<AttributeUsage(AttributeTargets.Assembly)> _
Class DesignTimeBootstrapperAttribute
Inherits Attribute
Public Sub New()
Dim dep = New DependencyObject()
If DesignerProperties.GetIsInDesignMode(dep) Then
' TODO: Design-time initialization…
'Not sure how to get application level resources to load at design time?
End If
End Sub
所以我的问题是:如何让应用程序在设计时初始化和加载 application.xaml 中的资源,以便我的设计器正确显示样式化的用户控件?或者,我如何声明这些全局资源,以便它们在设计和运行时都可以工作?