У меня есть два UserControls (uc1 и uc2), загружаемых в третий UserControl (оболочку).Оболочка имеет два свойства, uc1 и uc2, типа UserControl1 и UserControl2, и у каждого из них есть DependencyProperty, зарегистрированный для их собственных классов с именем IsDirty:
public static readonly DependencyProperty IsDirtyProperty = DependencyProperty.Register("IsDirty", typeof (bool), typeof (UserControl1));
public bool IsDirty
{
get { return (bool) GetValue(IsDirtyProperty); }
set { SetValue(IsDirtyProperty, value); }
}
(тот же код для UserControl2)
Shell имеет TextBlocks, привязанные к свойствам IsDirty:
<TextBlock Text="{Binding ElementName=shell, Path=Uc1.IsDirty}"/>
<TextBlock Text="{Binding ElementName=shell, Path=Uc2.IsDirty}"/>
Когда я изменяю значения IsDirty в uc1 и uc2, Shell никогда не получает уведомления.Что мне не хватает?UserControl является потомком DependencyObject ...
Такое же поведение возникает, если у меня есть обычные свойства, уведомляющие об изменениях через INotifyPropertyChanged.
Если я поднимаю перенаправленное событие из uc1 и uc2, всплывающее в Shell,тогда я могу поймать значение Dirty и все работает, но я не должен был этого делать, не так ли?
Спасибо
Редактировать: Ответ заключается в том, чтобы поднять событие измененного свойства в Uc1и Uc2 свойства или сделать их DP.