【问题标题】:c# WPF ComboBox Data doesnt show the right datasc# WPF ComboBox Data 不显示正确的数据
【发布时间】:2017-08-11 19:54:09
【问题描述】:

所以我在我的 windows 窗体项目中使用了以下代码,一切正常。现在我想在我的 wpf 项目中使用此代码,但是第二个组合框 (cbFahrzeugModell) 显示了另一个 ComboBox 项的数据,我知道为什么。

所以,总结一下: 2 个组合框(cbFahrzeugHersteller 和 cbFahrzeugModell)。 如果我在 cbFahrzeugHersteller 中选择了一个项目,那么 cbFahrzeugModell 应该在 cbFahrzeugModell 中显示相应的项目。它正在显示项目,但它显示了 cbFahrzeugHersteller 的错误 ItemIndex 的数据。

       private void cbFahrzeugHersteller_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        cbFahrzeugModell.IsEnabled = true;
        cbFahrzeugModell.Items.Clear();
        cbFahrzeugModell.Text = "";

        try
        {
            connection.Open();

            OleDbCommand command = new OleDbCommand();
            command.Connection = connection;
            string query = "SELECT DISTINCT Modell FROM Autos WHERE Hersteller = @FahrzeugHersteller;";
            command.CommandText = query;
            command.Parameters.Add("@FahrzeugHersteller", SqlDbType.Text);
            command.Parameters["@FahrzeugHersteller"].Value = cbFahrzeugHersteller.Text;
            OleDbDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                cbFahrzeugModell.Items.Add(reader["Modell"].ToString());
            }

            connection.Close();
        }
        catch (Exception ex)
        {
            System.Windows.Forms.MessageBox.Show("Error " + ex);
        }
    }

【问题讨论】:

    标签: c# wpf visual-studio combobox


    【解决方案1】:

    SelectionChanged 事件中,ComboBoxText 属性将是先前的选择。尝试投射cbFahrzeugHersteller.SelectedValuecbFahrzeugHersteller.SelectedIteme.AddedItems[0] 是另一种选择。我猜这些中的任何一个都将是一个字符串,但由于你没有说cbFahrzeugHersteller 可能是别的东西。如果是这种情况,您需要设置一个断点,并通过检查监视窗口中的这些属性来确定究竟是什么。

    如果您尝试将 Winforms 代码直接转换为 WPF,您将遇到诸如此类的无穷无尽的问题。这两个框架有很大的不同。如果您打算坚持使用 WPF,那么您真的应该学习 MVVM 并按照自己的方式使用 WPF。尝试在 WPF 中编写 Winforms 代码是让自己痛苦的保证方式。

    衡量 ComboBox.Text 属性在 WPF 中的重要性的一个指标是,在每天专业地编写 WPF 并回答有关 Stack Overflow 的问题五年后,我有点惊讶地发现 System.Windows.Controls.ComboBox 有 em> Text 属性。

    【讨论】:

    • 与 cbFahrzeugHersteller.SelectedValue 合作,谢谢!
    猜你喜欢
    • 2020-12-11
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多