Это то, что действительно воодушевляет меня во многих рамках, включая WPF. Что вам нужно, так это некоторая концепция задержки ответа на уведомления об изменениях, чтобы пользователь никогда не видел промежуточные состояния. Однако вы не можете изменить способ, которым WPF реагирует на ваши уведомления, поэтому лучшее, что вы можете сделать, - это отложить ваши уведомления до «после того, как пыль осядет». В вашем случае вы захотите изменить оба поля поддержки перед отправкой уведомлений. Ваш метод сброса может закодировать эту идею следующим образом:
public void Reset()
{
_selectedUser = null;
_selectedProductCategory = null;
_products = null;
RaisePropertyChanged("SelectedUser");
RaisePropertyChanged("SelectedProductCategory");
}
На мой взгляд, способ, которым WPF синхронно обновляет дисплей в ответ на уведомления об изменениях, просто неверен. Их система DependencyProperty дает им возможность просто пометить зависимости как грязные и выполнить пересчет в более позднее время.
Я использую идею пометить как грязный и асинхронный пересчет в качестве общего решения проблемы, которую вы отметили в этом вопросе, и в эти дни я не мог представить программирование без него. Обидно, что больше фреймворков так не работает.