在不触发 SelectedIndexChanged 的​​情况下更改 SelectedIndex?

Change SelectedIndex without triggering SelectedIndexChanged?

我有问题。我想为 ComboBox 设置一个默认值(有点像 'header text')。这纯粹是为了美观,将向用户描述组合框的初始用途。

我还有一个用于打开另一个视图的组合框的 SelectedIndexChanged。

我的问题是,我将 .SelectedIndex 更改为“0”值,因此我的 'Header' 被选中。当我更改为另一个 Index 时,它似乎会导致无限循环,直到 ComboBox 的 .SelectedValue 变为 null 并且 .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 }

谢谢!

您可以通过添加一些标志变量来跳过第一个事件。将 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;
}