ComboBox SelectionChanged事件显示以前的项目

时间:2017-04-20 15:36:34

标签: c# wpf

我有2个ComboBoxes。当我在第一个ComboBox中选择/更改项目时,第二个ComboBox将启用。但是第二个ComboBox总是向我显示之前的项目。

例如: 我在ComboBox 1中更改了Item。而ComboBox2没有向我显示任何项目。 我再次在ComboBox 1中更改项目。现在,ComboBox2向我显示了第一次更改时应显示的项目。

这是我的代码:

private void categoryComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    subCategoryComboBox.Items.Clear();
    subCategoryComboBox.IsEnabled = true;

    string SelectedCategoryID = ConvertBackCategory(categoryComboBox.Text);
    connection = new MySqlConnection(conf.connection_string);
    if (this.OpenConnection() == true)
    {
        try
        {
            using (MySqlCommand cmd = new MySqlCommand())
            {
                cmd.Connection = connection;
                cmd.CommandText = "SELECT name FROM auftrags_typ_childcategory WHERE category = @CategoryID";
                cmd.Parameters.AddWithValue("@CategoryID", SelectedCategoryID);
                using (MySqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        subCategoryComboBox.Items.Add(reader["name"].ToString());
                    }
                }
            }

        }
        catch (MySqlException ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
        }
    }
}

我如何解决这个问题? /为什么它不显示当前的项目?

1 个答案:

答案 0 :(得分:2)

The Text property of the WPF ComboBox直到SelectionChanged事件被提出后才会更新。不要问我为什么,但事实并非如此。他们似乎只希望Text属性用于具有可编辑文本的组合框。

ComboBox被引发之前,

SelectionChanged的所有其他相关属性都已更新

SelectedItemSelectedValueSelectedIndexSelectionChanged处理程序中都是正确且最新的。 I answered this question yesterday;你应该能够毫不费力地根据自己的需要调整答案,但如果你遇到困难,请告诉我。