【发布时间】:2015-03-03 00:02:47
【问题描述】:
假设我有一个继承自另一个控件的自定义控件。 我想设置这个控件的一些属性,所以我在构造函数中添加了这样的东西,例如:
public class MyControl : Canvas
{
public MyControl()
{
if (getSomeTestValueFromAppSettings())
{
this.Background = ColorConverter.MyStaticBrushProperty1;
}
else
{
this.Background = ColorConverter.MyStaticBrushProperty2;
}
}
}
现在,应用程序内一切正常,因此没有问题。 关键是,如果我在控件构造函数中添加类似这样的内容,XAML 设计器会出现错误,并告诉我它无法创建控件的实例。
没关系,因为构造函数当然会尝试访问应用程序本地设置,但它无法在 XAML 设计器中执行此操作。
我目前正在使用它作为一种解决方法:我只是将我的所有 conde 包装在 try/catch 块内的构造函数中,如果我遇到异常(仅在 XAML 设计器中发生)我只是忽略它。
这样代码在手机上仍然可以正常工作,并且不会导致 XAMl 设计器崩溃。 虽然我不认为这是一个好的解决方案,但我认为类构造函数中的 try/block 并不是一个好的编程实践。
我希望有类似“编译器指令”之类的东西,它可以告诉编译器什么时候它实际上不在设备/模拟器上运行,而是在 XAML 设计器中运行,但我没有找到类似的东西。
对于如何解决该问题,您有什么建议或其他更好的想法吗?
谢谢!
塞尔吉奥
【问题讨论】:
标签: c# visual-studio-2010 xaml windows-runtime windows-phone-8.1