DisplayMemberPath for ComboBox in WPF, C#

本文关键字:WPF in for ComboBox DisplayMemberPath | 更新日期: 2023-09-27 17:56:41

我有包含必要DataRows DataTable,我想在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);
}

DisplayMemberPath for ComboBox in WPF, C#

应该

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

顺便说一句,"WPF 方式"是设置控件的ItemSource,而不是手动添加到Items集合。

尝试设置combxManufacturer.ItemsSource属性

combxManufacturer.ItemsSource = dataTableManufacturers.AsDataView;

无需添加项目

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

我试过了这个,我知道它有效。

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" />