Предположим, у меня есть приложение MVVM с ListView элементов и текстовое поле, редактирующее свойство (Текст) выбранного элемента.Automatic INotifyPropertyChanged после изменения в представлении
<TextBox Text="{Binding SelectedItem.Text}"/>
<ListBox ItemsSource="{Binding Items}" DisplayMemberPath="Text" SelectedItem="{Binding SelectedItem}"
В моей модели ViewModel у меня есть ObservableCollection of Items. Каждый элемент реализует INotifyPropertyChanged и обладает требуемым свойством. Если изменить текст моего TextBox, список не обновляется, потому что у меня есть только свойство без уведомления:
public class Item : INotifyPropertyChanged
{
public string Text { get; set; }
}
Мой вопрос: Есть ли способ, чтобы обновить Text-свойство моего списка без использования PropertyChanged как это ?:
private string _Text;
public string Text
{
...
set
{
_Text = value;
PropertyChanged("Text");
}
}
есть ли способ уволить PropertyChanged прямо с моей точки зрения после того, как изменили текст моего TextBox - или другой подход?
Благодарим за помощь!
Где находится ваш 'TextBox'? Я вижу только «TextBlock». Почему невозможно создать событие PropertyChanged из модели просмотра? – dkozl
Вернитесь к удаленному комментарию, который вы оставили ниже, и следуйте по ссылке, которую вы оставили. Затем прочитайте, что говорит этот ответ. Затем сравните это с классом 'Item' со свойством' Text'. Ответ смотрит вам в лицо. – slugster
@dkozl: Я изменил TextBlock на TextBox ... моя ошибка. Без реализации INotifyPropertyChanged он работал без уведомления (смотрите здесь: http://stackoverflow.com/questions/7767218/why-does-the-binding-update-without-implementing-inotifypropertychanged). Теперь я внедрил INPC, и я не хочу добавлять уведомления о каждом свойстве моего проекта (это только минимальный пример). – Fruchtzwerg