Конструкция XAML {Binding} очень удобна, потому что она автоматически обрабатывает все проблемы PropertyChanged. Это действительно впечатляет, когда вы указываете путь к объекту через структуры данных .NET, и все автоматически обновляется для вас.
Я хотел бы использовать то же самое в C #. Я хотел бы иметь свойство, которое получено из значения другого свойства. Пример
class Foo
{
public Bar Bar = new Bar();
public string ItGetter
{
get
{
return Bar.Baz.It;
}
}
}
class Bar
{
public Baz Baz = new Baz();
}
class Baz
{
public string It { get { return "You got It!"; } }
}
Если вы вызываете ItGetter для Foo, вы получаете значение It от Baz. Это работает нормально, за исключением того, что оно не аннулировано - т.е. если оно изменилось, на ItGetter не было бы уведомлений об изменениях. Кроме того, если ссылки Foo.Bar или Bar.Baz изменены, вы также не получите уведомления об изменении.
Я могу добавить соответствующий код IChangeNotify в свойствах, но у меня такой вопрос: как мне кодировать свойство ItGetter, чтобы оно вызывало событие PropertyChanged при изменении какой-либо из ссылок в пути или значение It? Я надеюсь, что мне не нужно вручную настраивать события измененных свойств для всех элементов в пути ....
Спасибо за любую помощь!
Eric