Не думайте, что Application.Current
- ваше приложение во время разработки.Например, когда вы используете Expression Blend
, Current is Expression Blend.Во время разработки MainWindow
не является основным окном вашего приложения.Обычно операции, приводящие к сбою пользовательского / обычного элемента управления во время разработки, включают в себя следующее.
- Приведение тока к вашему пользовательскому подклассу приложения.
- Приведение MainWindow к вашему пользовательскому подклассу Window.
Вот два подхода к написанию кода для времени разработки.Первый подход заключается в написании защитного кода путем проверки нулевого условия.Второй подход заключается в проверке, активен ли режим разработки, путем вызова метода GetIsInDesignMode
.Вы можете прочитать о GetIsInDesignMode
в здесь .
Решение 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;
}
}