让我们说我有一个继承自另一个控件的自定义控件。 我想设置这个控件的一些属性,所以我在构造函数中添加这样的东西,例如:
public class MyControl : Canvas
{
public MyControl()
{
if (getSomeTestValueFromAppSettings())
{
this.Background = ColorConverter.MyStaticBrushProperty1;
}
else
{
this.Background = ColorConverter.MyStaticBrushProperty2;
}
}
}
现在,应用内部的一切正常,所以没有问题。 关键是如果我在控件构造函数中添加这样的东西,我会得到XAML设计器的错误,它告诉我它不能创建控件的实例。
没关系,因为构造函数当然正在尝试访问应用程序本地设置,而且它无法在XAML Designer中执行此操作。
我目前正在使用它作为一种解决方法:我只是将我的所有conde包装在try / catch块中的构造函数中,如果我得到一个异常(只发生在XAML Designer中)我只是忽略它
这样代码在手机上仍能正常工作,并且它不会使XAMl Designer崩溃。 我不认为这是一个很好的解决方案,但是类构造函数中的try / block并不是我认为可以被认为是一个很好的编程实践。
我希望有类似"编译器指令"告诉编译器它什么时候没有在设备/模拟器上运行,而只是在XAML Designer中运行,但是我没有找到类似的东西。
您对如何解决这个问题有什么建议或其他更好的想法吗?
谢谢!
塞尔吉奥
答案 0 :(得分:1)
对于这种情况,实际上有一种内置方法。
只需使用此代码
if (DesignerProperties.GetIsInDesignMode(this))
{
// Design-mode specific functionality
}