2015-06-13 5 views
0

У меня проблема. Я хочу установить значение по умолчанию (вроде как «текст заголовка») для ComboBox. Это чисто эстетические цели и будет описывать начальную цель пользователя combobox.Изменить SelectedIndex без запуска SelectedIndexChanged?

У меня также есть SelectedIndexChanged для combobox, который открывает другой вид.

Моя проблема в том, что я меняю значение .SelectedIndex на значение «0», поэтому выбран «Header». Когда я перехожу на другой Индекс, он, кажется, вызывает бесконечный цикл, пока значение .SelectedValue из ComboBox не станет равным нулю, а .SelectedIndex станет «-1», которое выдает исключение.

Мой код ниже:

public MyView() 
    { 
     this.InitializeComponent(); 
     Load += MyLoadEvent(); 
    } 

private void MyLoadEvent(object sender, RoutedEventArgs e) 
    { 
     myComboBox.SelectedIndex = 0; 
    } 

private void myComboBoxSelectionChanged(object sender, SelectionChangedEventArgs e) 
    { // Use ComboBox Value and Go to the Other View } 

Спасибо!

ответ

1

Вы можете пропустить первое событие, добавив некоторую переменную флага. Для того, чтобы пропустить первые один или любое следующее событие после установки processEvent в false:

public MyView() 
{ 
    this.InitializeComponent(); 
    Load += MyLoadEvent(); 
    processEvent = false; 
} 
... 
private void myComboBoxSelectionChanged(object sender, selectionChangedEventArgs e) 
{ 
    if (processEvent) 
    { 
    // Use ComboBox Value and Go to the Other View 
    // event processing 
    ... 
    } 
    processEvent = true; 
} 
+0

Спасибо очень много! – Water

Смежные вопросы