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);
}
应该
"[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" />