Отключите элемент, чтобы пользователь увидел, что в данный момент он не является опцией (а также не может выбрать).Вы можете установить свойство IsEnabled для ComboBoxItem.
Если вы работаете с MVVM, добавьте свойство IsEnabled в свою ViewModel и привяжите его к свойству IsEnabled контейнера (ItemContainerStyle
).
Однако лучшим вариантом IMO будет, чтобы не отображать элементы, которые нельзя выбрать.
Обновление
Как и было обещано в комментарии, здесь приведен код диспетчера для установки SelectedItem с задержкой:
Dispatcher.BeginInvoke(new Action(delegate {
yourComboBox.SelectedItem=yourOldItem;
}), System.Windows.Threading.DispatcherPriority.ContextIdle, null);
Думаю, это поможет, но это не очень приятно.Если у вас есть возможность отключить или скрыть элементы, это будет намного лучше.Кстати, я взял ContextIdle за приоритет диспетчера.Это очень сильная ценность.Вы можете поиграть, какое значение соответствует вашим потребностям.
CoerceValueCallback
Другой возможностью будет получение из Combobox
, изменение метаданных для SelectedItem и добавлениеCoerceValueCallback
к нему.Там вы можете сбросить значение.