Я ищу чистое и элегантное решение для обработки события INotifyPropertyChanged
вложенных (дочерних) объектов . Пример кода:
public class Person : INotifyPropertyChanged {
private string _firstName;
private int _age;
private Person _bestFriend;
public string FirstName {
get { return _firstName; }
set {
// Short implementation for simplicity reasons
_firstName = value;
RaisePropertyChanged("FirstName");
}
}
public int Age {
get { return _age; }
set {
// Short implementation for simplicity reasons
_age = value;
RaisePropertyChanged("Age");
}
}
public Person BestFriend {
get { return _bestFriend; }
set {
// - Unsubscribe from _bestFriend's INotifyPropertyChanged Event
// if not null
_bestFriend = value;
RaisePropertyChanged("BestFriend");
// - Subscribe to _bestFriend's INotifyPropertyChanged Event if not null
// - When _bestFriend's INotifyPropertyChanged Event is fired, i'd like
// to have the RaisePropertyChanged("BestFriend") method invoked
// - Also, I guess some kind of *weak* event handler is required
// if a Person instance i beeing destroyed
}
}
// **INotifyPropertyChanged implementation**
// Implementation of RaisePropertyChanged method
}
Сосредоточьтесь на свойстве BestFriend
и этом ' s установщик значений. Теперь я знаю, что могу сделать это вручную , выполнив все шаги, описанные в комментариях. Но это будет много кода, особенно когда я планирую иметь много дочерних свойств, реализующих INotifyPropertyChanged
, как это. Конечно, они не всегда будут одного и того же типа, единственное, что у них общего, - это интерфейс INotifyPropertyChanged
.
Причина в том, что в моем реальном сценарии у меня есть сложный элемент "(в тележке) объект, который имеет свойства вложенных объектов на нескольких уровнях (у элемента есть объект" License ", который сам может снова иметь дочерние объекты), и мне нужно получать уведомление о любом отдельном изменении" элемента ", чтобы иметь возможность чтобы пересчитать цену.
Есть ли у вас хорошие советы или даже Теперь я знаю, что могу сделать это вручную , выполнив все шаги, описанные в комментариях. Но это будет много кода, особенно когда я планирую иметь много дочерних свойств, реализующих INotifyPropertyChanged
, как это. Конечно, они не всегда будут одного и того же типа, единственное, что у них общего, - это интерфейс INotifyPropertyChanged
.
Причина в том, что в моем реальном сценарии у меня есть сложный элемент "(в тележке) объект, который имеет свойства вложенных объектов на нескольких уровнях (у элемента есть объект" License ", который сам может снова иметь дочерние объекты), и мне нужно получать уведомление о любом отдельном изменении" элемента ", чтобы иметь возможность чтобы пересчитать цену.
Есть ли у вас хорошие советы или даже Теперь я знаю, что могу сделать это вручную , выполнив все шаги, описанные в комментариях. Но это будет много кода, особенно когда я планирую иметь много дочерних свойств, реализующих INotifyPropertyChanged
, как это. Конечно, они не всегда будут одного и того же типа, единственное, что у них общего, - это интерфейс INotifyPropertyChanged
.
Причина в том, что в моем реальном сценарии у меня есть сложный элемент "(в тележке) объект, который имеет свойства вложенных объектов на нескольких уровнях (у элемента есть объект" License ", который сам может снова иметь дочерние объекты), и мне нужно получать уведомление о любом отдельном изменении" элемента ", чтобы иметь возможность чтобы пересчитать цену.
Есть ли у вас хорошие советы или даже реализуем все шаги, описанные в комментариях. Но это будет много кода, особенно когда я планирую иметь много дочерних свойств, реализующих INotifyPropertyChanged
, как это. Конечно, они не всегда будут одного и того же типа, единственное, что у них общего, - это интерфейс INotifyPropertyChanged
.
Причина в том, что в моем реальном сценарии у меня есть сложный элемент "(в тележке) объект, который имеет свойства вложенных объектов на нескольких уровнях (у элемента есть объект" License ", который сам может снова иметь дочерние объекты), и мне нужно получать уведомление о любом отдельном изменении" элемента ", чтобы иметь возможность чтобы пересчитать цену.
Есть ли у вас хорошие советы или даже реализуем все шаги, описанные в комментариях. Но это будет много кода, особенно когда я планирую иметь много дочерних свойств, реализующих INotifyPropertyChanged
, как это. Конечно, они не всегда будут одного и того же типа, единственное, что у них общего, - это интерфейс INotifyPropertyChanged
.
Причина в том, что в моем реальном сценарии у меня есть сложный элемент "(в тележке) объект, который имеет свойства вложенных объектов на нескольких уровнях (у элемента есть объект" License ", который сам может снова иметь дочерние объекты), и мне нужно получать уведомление о любом отдельном изменении" элемента ", чтобы иметь возможность чтобы пересчитать цену.
Есть ли у вас хорошие советы или даже m планирует иметь много дочерних свойств, реализующих INotifyPropertyChanged
, как это. Конечно, они не всегда будут одного и того же типа, единственное, что у них общего, - это интерфейс INotifyPropertyChanged
.
Причина в том, что в моем реальном сценарии у меня есть сложный элемент "(в тележке) объект, который имеет свойства вложенных объектов на нескольких уровнях (у элемента есть объект" License ", который сам может снова иметь дочерние объекты), и мне нужно получать уведомление о любом отдельном изменении" элемента ", чтобы иметь возможность чтобы пересчитать цену.
Есть ли у вас хорошие советы или даже m планирует иметь много дочерних свойств, реализующих INotifyPropertyChanged
, как это. Конечно, они не всегда будут одного и того же типа, единственное, что у них общего, - это интерфейс INotifyPropertyChanged
.
Причина в том, что в моем реальном сценарии у меня есть сложный элемент "(в тележке) объект, который имеет свойства вложенных объектов на нескольких уровнях (у элемента есть объект" License ", который сам может снова иметь дочерние объекты), и мне нужно получать уведомление о любом отдельном изменении" элемента ", чтобы иметь возможность чтобы пересчитать цену.
Есть ли у вас хорошие советы или даже реализация, чтобы помочь мне решить это?
К сожалению, я не могу / не могу использовать шаги после сборки, такие как PostSharp, для достижения моей цели.