если вы напишите свои свойства следующим образом:
public string LastName{
get { return lastName; }
set {
lastName = value;
RaisePropertyChanged("LastName");
}
}
Он всегда должен запускать событие PropertyChanged
, даже если значение одинаково.Вам не нужно запускать какие-либо дополнительные события для этого.
РЕДАКТИРОВАТЬ
в дополнение к вашему редактированию: Да, рекомендуется проверять фактическое значениеизменения, но если ваш сценарий должен отслеживать не значимые изменения, я не понимаю, почему вы не можете изменить его.«Лучшая практика» не означает «разбей это правило и иди в тюрьму», верно?
Но если у этих классов есть какие-либо другие наблюдатели, которые также полагаются на общее поведение PropertyChanged, вы можетевсегда расширяйте свойства и генерируйте другое (пользовательское) событие, как вы упомянули:
public event PropertyChangedEventHandler AttemptedPropertyChanged;
public void RaiseAttemptedPropertyChanged(string propName)
{
if (AttemptedPropertyChanged != null)
{
AttemptedPropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}
public string LastName{
get { return lastName; }
set {
RaiseAttemptedPropertyChanged("LastName");
if (lastName == value) return;
lastName = value;
RaisePropertyChanged("LastName");
}
}