INotifyPropertyChanged не работает должным образом - PullRequest
2 голосов
/ 18 марта 2012

У меня небольшие проблемы с INotifyPropertyChanged. Я реализовал это много раз, однако этот случай отличается. Я хотел бы создать следующее приложение: mockup

Существует несколько контейнеров с вкладками, которые связаны с различными ObservableCollections of Entities. Теперь я хотел бы показать имя (последней) выбранной сущности. Чтобы добиться этого, я создал DependencyProperty CurrentEntity в классе Window и назначил через SelectionChanged на TabControls текущий Entity.

private void SelectionChanged(Object sender, EventArgs e)
{
    CurrentEntity = e.NewItems[0] as Entity;
}

TextBlock, который на изображении выше показывает VideoA, выглядит следующим образом:

<TextBlock Text={Binding CurrentEntity.Name}" />

Теперь, когда я выбираю новую вкладку, текст в текстовом блоке изменяется соответственно. Однако, когда я изменяю имя сущности (внутри TextBox на вкладке, которая также связана с сущностью), текст в TextBlock не изменяется. Мне нужно выбрать другую вкладку, а затем вернуться обратно на вкладку, где я изменил имя, чтобы увидеть вновь введенное имя в TextBlock. По сути, это моя проблема, я бы хотел, чтобы текст менялся без предварительного выбора другой вкладки (и да, я снял фокус с TextBox внутри вкладки после ввода нового имени).

Кто-нибудь знает, в чем проблема?

Моя "архитектура" выглядит (более или менее ;-)) так: uml

1 Ответ

0 голосов
/ 19 марта 2012

ObservableCollection просто означает, что событие для обновления пользовательского интерфейса запускается при изменении коллекции, добавлении, удалении, изменении порядка и т. Д.

Изменение свойства элемента в ObservableCollection, например строки, фактически не вызывает событие пользовательского интерфейса.

Реализует ли объект, который у вас внутри ObservableCollection, INotifyPropertyChanged?

...