我有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);
}
}
}
我如何解决这个问题? /为什么它不显示当前的项目?
答案 0 :(得分:2)
The Text
property of the WPF ComboBox直到SelectionChanged
事件被提出后才会更新。不要问我为什么,但事实并非如此。他们似乎只希望Text
属性用于具有可编辑文本的组合框。
ComboBox
被引发之前, SelectionChanged
的所有其他相关属性都已更新。
SelectedItem
,SelectedValue
和SelectedIndex
在SelectionChanged
处理程序中都是正确且最新的。 I answered this question yesterday;你应该能够毫不费力地根据自己的需要调整答案,但如果你遇到困难,请告诉我。