2

に表示したいDataTable必要なが含まれています。2番目は呼び出され、私はそれを.DataRowsComboBoxDataColumnVALUEDisplayMember

ただし、の数に応じて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 に答える