当我加载解决方案并且某些窗口打开了设计器选项卡时,不会执行此窗口静态构造函数。
也许我的结论是错误的(因为我完全不知道设计师如何加载东西),但这里有一个测试用例:
创建新的 WPF 项目。
创建简单的扩展
public class MyExtension : MarkupExtension
{
public static bool Test;
public override object ProvideValue(IServiceProvider serviceProvider) => Test.ToString();
}
- 添加到主窗口
<TextBlock Text="{local:My}" />
和
static MainWindow()
{
MyExtension.Test = true;
}
- 现在编译它(F6),
TextBlock
应该True
在设计器中显示。 - 不要关闭设计器窗口。关闭VS。
- 启动解决方案(双击
sln
文件)。 - 只要设计器加载窗口,您就会看到
TextBlock
displayFalse
。
怎么回事?有人可以确认(或者是我的 VS 2015 错误)吗?
我真的很想知道设计器是如何工作的:如何加载窗口,使用哪些事件/方法等。似乎没有执行窗口构造函数(非静态的)(在设计时没有发生任何事情),如何然后创建并显示窗口?