2

ヘッダーにドロップダウン メニューがある DataGrid を作成しようとしていますが、その方法がわかりません。

DataGrid 自体は、さまざまな形式を持つことができる CSV ファイルから入力されるため、XAML で列を事前に定義することはできません。代わりに、次のように設定します。

 //add headers as columns on the data grid
 var headerRow = _inputFile.GetHeaderRow();
 foreach (var hr in headerRow)
 {
      var textColumn = new DataGridTextColumn();
      textColumn.Header = hr;
      SourceGrid.Columns.Add(textColumn);
 }

私の目標は、入力 CSV ファイルを事前定義された一連の出力にマッピングするという考え方であるため、ヘッダー列 (または適切にスタイル設定されている場合は最初の行) にもドロップダウン メニューを表示することです。ドロップダウン メニューを使用して、入力ファイル ヘッダーごとに何にマップするかを選択します。

xaml でデータ グリッド テンプレートを定義しようとする方が良いでしょうか? または、入力データをクラス構造に配置して、必要な方法でグリッドに簡単にデータバインドしますか? それともまったく別のものですか?

私はWPFにかなり慣れていないので、ここからどこへ行くべきかを見つけるのに苦労しているので、正しい方向へのポインタでさえ非常に役に立ちます!


編集:

var comboColumn = new DataGridComboBoxColumn();
comboColumn.Header = new ComboBox();
SourceGrid.Columns.Add(comboColumn);

コードでヘッダーをテキストまたはコンボボックスに設定できることは理解していますが、テキストとコンボボックスの両方を同じ列ヘッダーに配置する方法はありますか? また、この問題を解決するための私のアプローチは良いものですか、それとも別の種類のコントロールを検討する必要がありますか? それとも、コードで値を設定する代わりにデータバインディングを使用しているのでしょうか?

4

1 に答える 1

1

以下のコードは、wpf で Combobox ヘッダーを表示するのに役立ちます。

<DataGridTextColumn Binding="{Binding FirstName}">
     <DataGridTextColumn.Header>
      <ComboBox />
     </DataGridTextColumn.Header>
    </DataGridTextColumn>
于 2013-02-07T16:32:11.423 に答える