[英]Avoid XAML Designer error with custom controls
假设我有一个自定义控件,该控件继承自另一个控件。 我想设置此控件的一些属性,因此我在构造函数中添加了类似的内容,例如:
public class MyControl : Canvas
{
public MyControl()
{
if (getSomeTestValueFromAppSettings())
{
this.Background = ColorConverter.MyStaticBrushProperty1;
}
else
{
this.Background = ColorConverter.MyStaticBrushProperty2;
}
}
}
现在,在应用程序内一切正常,因此那里没有问题。 关键是,如果在控件构造函数中添加类似的内容,则会出现XAML设计器错误,并告诉我无法创建控件的实例。
没关系,因为构造函数当然会尝试访问应用程序的本地设置,并且它无法在XAML设计器中执行此操作。
我目前正在使用它作为变通方法:我只是将所有conde包装在try / catch块内的构造函数中,并且如果遇到异常(仅在XAML设计器中发生),则将其忽略。
这样,代码仍然可以在手机上正常工作,并且不会使XAMl Designer崩溃。 我认为这不是一个好的解决方案,在类构造函数中进行try / block并不是我认为的一种好的编程习惯。
我希望有一个类似“编译器指令”的内容来告诉编译器何时它实际上不在设备/仿真器上运行,而是在XAML设计器内部运行,但我没有找到类似的东西。
您是否有关于解决该问题的建议或其他更好的主意?
谢谢!
塞尔吉奥
对于这种情况,实际上有一个内置方法。
只需使用此代码
if (DesignerProperties.GetIsInDesignMode(this))
{
// Design-mode specific functionality
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.