不要假设
Application.Current
您的应用程序是否在设计时。例如,当您使用
Expression Blend
,当前是表达式混合。在设计时,
MainWindow
不是应用程序的主窗口。通常,导致用户/客户控件在设计时失败的操作包括以下内容。
-
将电流强制转换为应用程序的自定义子类。
-
将主窗口强制转换为窗口的自定义子类。
下面是两种为设计时编写代码的方法。第一种方法是写
防守的
通过检查空条件进行编码。第二种方法是通过调用
GetIsInDesignMode
方法。你可以读到
获取IsInDesignMode
在
here
.
解决方案1:
private void Test1_Loaded(object sender, RoutedEventArgs e)
{
var app = Application.Current as App;
if( app != null)
{
app.PropertyChanged += UserControl1_PropertyChanged;
}
}
解决方案2:
private void Test1_Loaded(object sender, RoutedEventArgs e)
{
if (!DesignerProperties.GetIsInDesignMode(this))
{
// Design-mode specific functionality
(Application.Current as App).PropertyChanged += UserControl1_PropertyChanged;
}
}