目前我正在为每个 Window / UserControl使用静态构造函数来执行一些初始化,这对于所有这些都是相同(初始化某些外部库类的静态属性) ,此库中的标记扩展需要工作)。
是否有应用程序范围内的位置来执行初始化?例如。设计师在渲染窗口xaml之前执行的操作是什么?
在运行时,所有初始化都发生在App
构造函数中。对于设计师来说,奇怪的是克隆了几十个静态构造函数,因为设计师似乎并不关心App
。
我为所有Windows / UserControl创建了一个带有这种静态构造函数的基类,遗憾的是c#不支持多继承。
答案 0 :(得分:0)
你不能只使用单例模式而不是静态构造函数吗?
e.g。在ViewModel中:var yourComponent = YourComponent.Current;
public class YourComponent
{
private static YourComponent _current;
public static YourComponent Current {
get {
return _current ?? (_current = new YourComponent());
}
}
private YourComponent()
{
//perform your initialization here. This will be executed only once;
}
}
修改强> 要回答你的问题,wpf(xaml)设计师是否有全局初始化位置:是的,它是 - app.xaml
尽管xaml设计器不会在代码隐藏中触发应用程序事件,但它会加载资源,您可以轻松地在资源中对任何类进行实例化。只需在类的constuctor中执行初始化逻辑,并将类添加到app资源