2

我有DataTable包含必要DataRows的,我想显示在ComboBox. 第二个DataColumn被称为VALUE,我想把它变成一个DisplayMember.

但是,根据. ComboBox_ 我究竟做错了什么?DataRows

DataTable dataTableManufacturers;
dm = new DatabaseManagement.DatabaseManagement(Properties.Settings.Default.DBServer,Properties.Settings.Default.DBName, Properties.Settings.Default.DBUser, Properties.Settings.Default.DBPassword);
dataTableManufacturers = dm.getManufacturers();

combxManufacturer.DisplayMemberPath = "VALUE";

foreach (DataRow row in dataTableManufacturers.Rows)
{
    combxManufacturer.Items.Add(row);
}
4

4 回答 4

4

DisplayMemberPath应该是"[VALUE]"因为您打算使用此索引器(而不是属性)来获取数据。有关详细信息,请参阅MSDN 上的绑定路径语法。

作为一个(重要的!),“WPF 方式”是设置控件ItemSource而不是手动添加到Items集合中。

于 2013-01-29T11:27:04.670 回答
0

尝试设置combxManufacturer.ItemsSource = dataTableManufacturers.Rows;而不是单独添加行。

于 2013-01-29T11:26:55.817 回答
0

尝试设置combxManufacturer.ItemsSource属性

combxManufacturer.ItemsSource = dataTableManufacturers.AsDataView;

并且无需添加项目

于 2013-01-29T11:28:33.067 回答
0

我试过了,我知道它确实有效。

private DataTable testTable = new DataTable();
        testTable.Columns.AddRange(new DataColumn[]
            {
                new DataColumn("ID", typeof(int)), 
                new DataColumn("Name", typeof(string)), 
            });
        var row = testTable.NewRow();
        row[0] = 1;
        row[1] = "My Name";
        testTable.Rows.Add(row);
        myTestCmb.ItemsSource = TestTable.AsDataView();

<ComboBox x:Name ="myTestCmb" DisplayMemberPath="Name" />
于 2013-01-29T12:31:03.630 回答