WPF: Не обновляется привязка к TextBox

В окошке XAML есть TextBox с привязкой:

<!-- Rule description -->
<GroupBox Header="Rule description" Grid.Row="7">
	<TextBox Text="{Binding Description, Mode=TwoWay}" Margin="0,5"/>
</GroupBox>

В коде мы задаем ViewModel так:

	_viewModel = new DetailedRuleViewModel(null, detailedEvent);
	DataContext = _viewModel;

Ну а в самой ViewModel это поле описано так:

public string Description
{
	get => _copy.Description ?? "";
	set
	{
		_copy.Description = value;
		OnPropertyChanged(nameof(Description));
	}
}

Естественно сама ViewModel наследуется от INotifyPropertyChanged, так что всё должно обновляться корректно. Однако, при тестировании изменений в этом поле, они не происходили.

Решение

Оказывается, что по умолчанию, уведомления об изменениях поступают только при смене фокуса с элемента. Если же просто выделить TextBox и ввести какие-то данные, то программа об этом не «узнает» пока мы не покинем этот элемент и не перенесём фокус на другой!
Чтобы изменения увидеть, даже если мы редактируем только один элемент, нужно добавить триггер:

UpdateSourceTrigger=PropertyChanged

Нужный нам TextBox теперь будет выглядеть так:

<!-- Rule description -->
<GroupBox Header="Rule description" Grid.Row="7">
	<TextBox Text="{Binding Description, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Margin="0,5"/>
</GroupBox>


Подписаться
Уведомление о
guest
0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments