Надеюсь, это не слишком глупый вопрос: я только начал использовать MVVM light (обожаю пока!). В «до времени» (т. Е. До использования MVVML) мне приходилось отправлять любой код, который попадет в установщик свойств, в котором было вызвано событие INotifyPropertyChanged.
Я (неправильно?) Думал, что требование исчезнет при использовании MVVMlight.
Я все еще должен использовать это, правильно? Мои эксперименты говорят мне громкое «да».
Итак, вот действительно глупая часть - поскольку существует требование инициализации где-то класса dispatcherhelper MVVML, где я предполагаю, что он сохраняет поток пользовательского интерфейса, почему бы не сделать так, чтобы вызов RaisePropertyChanged выполнял Dispatch автоматически? Кажется, это обычное дело?
Не критика как таковая, скорее "почему это не работает таким образом": -)
Редактировать (скопировано из комментария автора)
FWIW, я сделал это:
public class QViewModelBase : ViewModelBase {
protected override void RaisePropertyChanged(string propertyName) {
DispatcherHelper.CheckBeginInvokeOnUI( () => base.RaisePropertyChanged(propertyName));
}
protected override void RaisePropertyChanged<T>(string propertyName, T oldValue, T newValue, bool broadcast) {
DispatcherHelper.CheckBeginInvokeOnUI( () => base.RaisePropertyChanged<T>(propertyName, oldValue, newValue, broadcast));
}
}