更改SelectedIndex而不触发SelectedIndexChanged?

时间:2015-06-13 17:38:22

标签: xaml combobox windows-store-apps

我遇到了问题。我想为ComboBox设置一个默认值(类似于'标题文本')。这纯粹是美学目的,并将向用户描述组合框的初始目的。

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

我的问题是,我将.SelectedIndex更改为' 0'价值所以我的标题'被选中。当我改为另一个索引时,它似乎会导致一个无限循环,直到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 }

谢谢!

1 个答案:

答案 0 :(得分: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;
}