В событии ComboBox.SelectionChanged я хочу знать, кто изменил значение ComboBox, пользователя или какой-либо другой код.
Сначала я проверил, истинно ли cmbBox.IsDropDownOpen. Но это неверно, если пользователь изменил ComboBox с помощью клавиатуры.
Тогда я подумал проверить, сфокусировано ли это. Silverlight ComboBox не имеет свойства IsFocused, поэтому я сохранил состояние в обработчиках событий cmbBoxGotFocus и cmbBoxLostFocus:
private bool cmbBox_isFocused = false;
private void cmbBox_GotFocus(object sender, RoutedEventArgs e)
{
cmbSalesPerson_isFocused = true;
}
private void cmbBox_LostFocus(object sender, RoutedEventArgs e)
{
cmbSalesPerson_isFocused = false;
}
К сожалению, это тоже не работает, потому что есть какое-то странное поведение, которое я не понимаю: когда пользователь нажимает на ComboBox, 2 события запускаются одно за другим, поэтому bool остается ложным.