При использовании привязки данных в WPF целевой объект зависимости обновляется при получении уведомления об изменении источника через интерфейс INotifyPropertyChanged
.
Например:
<TextBlock Text="{Binding Path=SomeField}"/>
Текстовое поле будет изменяться для правильного отображения значения SomeField при каждом вызове PropertyChanged(this, new PropertyChangedEventArgs("SomeField"))
из источника.
Что если я использую сложный путь, подобный следующему:
<TextBlock Text="{Binding Path=SomeObjField.AnotherField}"/>
Обновится ли текстовое поле для PropertyChanged(this, new PropertyChangedEventArgs("SomeObjField"))
в источнике?
А как насчет PropertyChanged(this, new PropertyChangedEventArgs("AnotherField"))
на промежуточном объекте (объекте, содержащемся в SomeObjField)?
Исходные объекты и поля НЕ являются объектами или свойствами зависимостей! Предположим, что свойство / классы реализованы примерно так:
public class Data : INotifyPropertyChanged
{
// INotifyPropertyChanged implementation...
public string SomeField
{
get { return val; }
set
{
val = value;
// fire PropertyChanged()
}
}
public SubData SomeObjField
{
get { return val; }
set
{
val = value;
// fire PropertyChanged()
}
}
}
public class SubData : INotifyPropertyChanged
{
// INotifyPropertyChanged implementation...
public string AnotherField
{
get { return val; }
set
{
val = value;
// fire PropertyChanged()
}
}
}