2011-01-31 4 views
0

У меня возникла проблема, когда при загрузке окна происходит событие «selection_change», связанное с элементом управления «combo box», когда окно загружается в первый раз. Почему это происходит и как его ограничить?Событие изменения компиляции wpf, вызванное при загрузке формы

С уважением

+0

Вы уверены, что вы не программно настройки выбранного элемента из combo-box в конструкторе или какое-то другое место в вашем коде? Если вы это сделаете, произойдет событие. –

+0

вы можете показать нам код, в котором вы имеете дело с Combobox, может быть, вы делаете то, что запускает событие ... –

+0

@shekhar, ничего особенного, только это в файле xaml: , а соответствующая функция в коде позади - gettting. – Rana

ответ

2

С этим кодом событие SelectionChanged не будет поднято. Создайте новый проект, вставьте его и попробуйте сами.

Мое предположение в значительной степени так же, как Sekhar _ Pro «s, вы заселение ваш ComboBox из кода позади, и что-то там вызывает SelectedItem изменить. Исследуйте cmbUsers.SelectedItem в обработчике события cmbUsers_SelectionChanged, чтобы узнать, имеет ли он какое-либо значение или имеет значение null в отладчике. Кроме того, посмотрите в стек вызовов, чтобы узнать, что вызвало это событие.

Пример кода

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     cmbUsers.Items.Add(new ComboBoxItem { Content = "Test" }); 
     cmbUsers.SelectedIndex = 0; 
    } 
    private void cmbUsers_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (cmbUsers.SelectedItem != null) 
     { 
      MessageBox.Show(cmbUsers.SelectedItem.ToString()); 
     } 
    } 
} 

The Call Stack выглядит, как это для меня в обработчик событий

enter image description here

+0

+1 я забыл предложить использовать стек вызовов ... –

+0

Полезный совет, спасибо. – Rana

0

Это не нормальное поведение, некоторые, где вы должны делать что-то вроде установки SelectedItem, и т.д., которые в свою очередь, вызывая событие. Проверьте тщательность событий жизненного цикла вашей формы и убедитесь, что вы делаете что-то подобное, может быть в событии Load или Activate или где-то в конструкторах.

+0

привет, я помню , у меня были аналогичные проблемы с приложениями win-форм, и я разрешил его там, используя событие «selection_change_commited» вместо события «selection_changed». В WPF «commited» версия не существует :( – Rana

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