如何判断当前是不是设计器模式(How to know wether it is in design mode)
情况一
在使用Visual Studio设计XAML时,设计器运行在[设计时]状态。VS在内部运行这些代码,从ViewModel计算出属性的值显示到XAML界面的控件上,让我们无需运行程序就可以观察到UI效果。但是如果ViewModel某个属性的值需要依赖外部资源,如,需要数据库取出数据,或者需要透过C++ dll访问硬件的状态,这些情况Visual Studio没办法计算属性,XAML便不能显示真实的数据显示效果,甚至会导致设计器崩溃,显示×号。
情况二
当我们自定义控件或用户控件时,使用System.ComponentModel.DesignerProperties.GetIsInDesignMode方法在控件构造函数及Loaded事件处理中判断当前环境是否处于DesignMode是一个很好的习惯,以避免在设计时载入控件失败的问题,或者提供一些期望的展示值,让使用控件的开发时在编写代码时看到一些比较好的展示效果。
设计器崩溃,提示NullReferenceException错误

解决办法是,检查是否在设计器模式,如果在设计器模式,可以提供模拟数据,运行时它会获取真实的数据。
下面的IsDesignMode返回true表示设计器模式。
public bool IsDesignMode
{
get
{
return DesignerProperties.GetIsInDesignMode(this); // 在控件类中使用这行
// return DesignerProperties.GetIsInDesignMode(new DependencyObject()); // 在ViewModel中使用这行
}
}

浙公网安备 33010602011771号