Я надеюсь, что это не слишком глупый вопрос: я только начал использовать MVVM свет (люблю его пока!). В «до времени» (то есть до использования MVVML) мне приходилось отправлять через пользовательский интерфейс любой код, который попадал бы в средство задания свойств, в котором было возбуждено событие INotifyPropertyChanged.
Я (неправильно?) Думал, что это требование будет исчезают при использовании MVVMlight.
Мне все еще нужно его использовать, верно? Мои эксперименты говорят мне решительное «да».
Итак, вот действительно глупая часть - поскольку существует требование инициализировать где-нибудь класс диспетчера MVVML, где, как я предполагаю, он сохраняет поток пользовательского интерфейса, почему бы не сделать так, чтобы вызов RaisePropertyChanged выполнял Dispatch автоматически? Вроде обычное дело?
Не критика как таковая, а скорее «почему это не работает так?»: -)
Edit (скопировано из комментария автора)
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));
}
}