1

MVVMを使ってWPFの画面をデザインしたいという依頼がありました。この画面には 2 つの DataGrid があります。

最初のデータグリッドは、データグリッドがアイテムを追加または削除できるコレクションにバインドされます。

ここで注意が必要なのは、最初のデータグリッドがバインドされているコレクション内の項目から列を自動的に生成するために、2 番目の DataGrid が必要なことです。

例:

最初の DataGrid に 3 行ある場合:

| Value 1 |
| Value 2 |
| Value 3 |

これらの 3 つの列を含めるには、2 番目のデータグリッドが必要です。

| Value 1 | Value 2 | Value 3 |

ただし、これらの列を2番目のデータグリッドに手動で追加する必要のないこれを実装する方法を考えようとしています.

  1. ビューのコード ビハインド ファイルを「空」のままにしたい (ビューのコンストラクターで自動生成された「InitializeCOMponent()」以外のコードを追加することはできません)

  2. ViewModel に実際に DataGrid への参照を保持させることはできません。これは、View から ViewModel への強い結びつきを生み出すと考えているためです。

これら2つの理由により、バインディングのみを含むこれを行う方法を知っている人はいますか(または、これら2つのルールを破らない他のソリューションですか?)

4

1 に答える 1

1
  1. DataTableaをfirstDataGridにバインドします。
  2. 次にtranspose、DataTable (Exchange の行と列) をsecondDataGrid にバインドします。

ここAutoGeneratedColumnsで、DataGrid のプロパティをに設定する必要がありますtrue

DataTable を転置するには、この記事を参照してください。

DataTableDataGridにバインドする簡単なソリューションを次に示します。

Collection最初の DataGrid に既にバインドしている場合は、コレクションからnewDataTable と値を定義してから、DataTable を DataGrid にバインドすることもできます。logically assigned

于 2013-04-23T04:08:12.420 に答える