繁体   English   中英

使用自定义控件避免XAML Designer错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM