2016-04-14 3 views
0

У меня возник вопрос о последствиях реализации INotifyPropertyChanged и свойств, которые не обновляются , потому что из INotifyPropertyChanged.Свойства не обновляются из-за INotifyPropertyChanged

Предположим, у меня есть окно с TextBlock и TextBox. Оба прикреплены к тому же свойству (Текст) в моей модели ViewModel.

<TextBlock Grid.Row="0" Text="{Binding Text}"/> 
<TextBox Grid.Row="1" Text="{Binding Text}"/> 

Сценарий 1:ViewModel не реализует INotifyPropertyChanged:

Если я оставлю фокус TextBox после изменения текста, мой TextBlock изменяет текст также.

Сценарий 2:ViewModel действительно осуществляет INotifyPropertyChanged:

Я не сгореть PropertyChanged вручную. Поэтому я понимаю, что мой TextBlock не меняет текст после изменения текста TextBox.

Но зачем работал сценарий 1 без INotifyPropertyChanged? ... И почему одно и то же действие больше не работает только из-за реализации INotifyPropertyChanged?

+0

Вы уверены? Что происходит, когда вы запускаете PropertyChanged? – Paparazzi

+0

Да @Paparazzi, если я запустил PropertyChanged, обновления TextBox, как и ожидалось. – Fruchtzwerg

ответ

0

Попробуйте это:

<TextBlock Grid.Row="0" Text="{Binding Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 
+0

Спасибо за ваш ответ. К сожалению, ваш ответ не объясняет мое явление. – Fruchtzwerg

+1

Извините, я думал, что вы решили решить свою проблему. В Сценарии 1, если текстовое поле изменяется в коде, оно не будет обновлять текс-блок. Он работает в визуальном интерфейсе, поскольку его часть поведения по умолчанию WPF обрабатывает привязку в пользовательском интерфейсе. Когда вы внедряете INPC, вы должны позаботиться об этом. Проверьте это: http://stackoverflow.com/questions/7767218/why-does-the-binding-update-without-implementing-inotifypropertychanged (не могу отформатировать ссылку правильно, прямо сейчас Im, используя странный компьютер со странным клавиатуры). Хороший! –

Смежные вопросы