0

datagridviewのitemssourceプロパティを、実行時までプロパティ名がわからないオブジェクトのリストにバインドしようとしています。

コードは現在コンパイルされていますが、列には何も表示されません(データグリッドには、リスト内の各項目の行が表示されますが、各列には何も表示されません)

列バインディングの設定

foreach (KeyValuePair<string, string> pair in _columns)
{
    Microsoft.Windows.Controls.DataGridTextColumn textCol = new Microsoft.Windows.Controls.DataGridTextColumn();
    textCol.Header = pair.Key;
    textCol.Binding = new Binding(pair.Value);
    ItemListDataGrid.Columns.Add(textCol);
}

ハードコードされたリストの例:

List<List<KeyValuePair<string,string>>> itemSet = new List<List<KeyValuePair<string,string>>>();
List<KeyValuePair<string,string>> item1 = new List<KeyValuePair<string,string>>();
item1.Add(new KeyValuePair<string,string>("ACTION","ACTION"));
itemSet.Add(item1);
ItemListDataGrid.ItemsSource = itemSet;

これを機能させる方法はありますか?

4

2 に答える 2

1

あなたがやろうとしているのは、expandoオブジェクトを実装することだと思います。

http://www.west-wind.com/weblog/posts/2012/Feb/08/Creating-a-dynamic-extensible-C-Expando-Object

それはあなたが探しているものに関するより多くの情報があなたの質問に答えるのを助けるだろうと言った。

于 2012-07-21T03:09:20.480 に答える
1

動的に入力されるDataTableを使用して、この問題を比較的迅速に解決することができました。Expandoオブジェクトも機能しますが、選択のためにオブジェクトをdatagridviewにロードするだけでよく、それ以降はオブジェクトは必要ありません。このため、この状況ではexpandoオブジェクトを使用しないことにしました。

于 2012-07-23T16:59:51.487 に答える