Silverlight - привязка данных не прослушивается для события PropertyChanged - PullRequest
1 голос
/ 12 ноября 2008

Может кто-нибудь объяснить мне, что здесь происходит?
Я создаю привязку в коде.

Целевым объектом является UserControl
Свойство target является логическим значением DependencyProperty
Исходный объект является FrameworkElement и реализует INotifyPropertyChanged
Свойство источника имеет тип ObservableCollection

Что происходит:

  • Привязка создается в коде, результат BindingExpressionBase выглядит нормально, режим OneWay, целевое значение установлено правильно (в данный момент)

    Binding b = новый Binding ();
    b.Path = "SourceProperty";
    b.Source = SourceObject;
    BindingExpressionBase e = this.SetBinding (TargetProperty, b);

  • Свойство источника затем изменяется в результате другой привязки данных. UserControl пытается запустить событие PropertyChanged.

  • .... но никто не слушает. PropertyChanged имеет значение null.

Я уверен, что целевому свойству больше ничего не назначено, поэтому оно все равно должно быть связано. Почему привязка не прослушивает событие PropertyChanged?

Ответы [ 2 ]

2 голосов
/ 12 ноября 2008

Хорошо, я нашел ответ сам. Это ошибка в Silverlight ..

Код, который делает следующее

if (PropertyChanged != null)  
{  
    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));  
}  

должен быть непосредственно в классе, к которому вы привязаны, а не в его предке. У меня это было внутри метода FirePropertyChanged () в базовом классе, и перемещение в производный класс имело значение.

0 голосов
/ 12 июня 2013

Для всех, кто испытывает это: убедитесь, что вы реализуете INotifyPropertyChanged на своей ViewModel !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...