C# WPF中的组合框数据绑定

C# WPF中的组合框数据绑定,c#,sql-server,C#,Sql Server,我有一个wpf格式的组合框。我想将其绑定到MS SQL server中的表。然而,每次运行代码时,我都会不断地出错。任何协助都将不胜感激。下面是我的代码: private void OnLoad(object sender, RoutedEventArgs e) { FillComboBox(); } protected void FillComboBox() { SqlConnection con = new SqlConn

我有一个wpf格式的组合框。我想将其绑定到MS SQL server中的表。然而,每次运行代码时,我都会不断地出错。任何协助都将不胜感激。下面是我的代码:

   private void OnLoad(object sender, RoutedEventArgs e)
    {
        FillComboBox();
    }
    protected void FillComboBox()
    {
        SqlConnection con = new SqlConnection(cs);
        DataSet ds = new DataSet();
        try
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("SELECT RegNumber,Make FROM Vehicles GROUP BY RegNumber,Make", con);
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            da.Fill(ds);
            combovehicle.DisplayMemberPath = "RegNumber"; 
            combovehicle.SelectedValue= "Make";     
            combovehicle.DataContext = ds.Tables[0];   
        }
        catch(Exception)
        {

        }
    }
}
}

因此,您告诉WPF使用属性Make和RegNumber进行显示

但是您传入了一个DataTable对象

DataRow确实提供了用于访问属性的索引器,但它不包含这些属性。加上DataTable不是IEnumerable,所以不能真正将其用作数据源


最重要的是,你做错了。您几乎不应该直接在视图中进行数据库调用,并将数据源设置为输出表。您应该通过MVVM模式来实现这一点

错误?什么错误?单击组合框时数据未显示它是否产生异常或只是没有按照预期的方式运行?如果是前者,那是什么?我处理了异常,但数据没有保存到乘客表中,因为我已经命名了它。您需要共享combobox的XAML,因为设置datacontext并不一定为它设置itemssource。修改代码为combovehicle.ItemsSource=ds.Tables[0];这可能适用于此代码。这意味着我必须在XAML中定义项源中的绑定路径。请原谅我的无知,但我对这方面还很陌生this@NicksonLukalaga我建议将DB访问放在视图模型中,并使用xaml绑定到它。看起来有一种方法可以直接绑定到datatable的DefaultView属性。或者,您可以创建自定义对象列表并绑定到该列表
combovehicle.DisplayMemberPath = "RegNumber"; 
combovehicle.SelectedValue= "Make";     
combovehicle.DataContext = ds.Tables[0];