Entity Framework を介して WPF DataGrid をエンティティにバインドしています。DataGrid にデータを希望どおりに表示する方法が見つからず、ソース データベースのデータまたはエンティティに触れられない/触れたくない。
生成されたエンティティ モデルには、次のプロパティを持つテーブル ("Table1") が 1 つだけあります。
ID (Int64)
Date (DateTime)
Item1 (Decimal)
Item2 (Decimal)
Item3 (Decimal)
XAMLで私は持っています:
<Window.Resources>
<CollectionViewSource x:Key="listOfItems" Source="{Binding}" />
</Window.Resources>
と:
<DataGrid Name="grid" ItemsSource="{Binding Source={StaticResource listOfItems}}">
</DataGrid>
コードで CollectionViewSource の Source を設定します。
CType(Me.FindResource("listOfItems"), CollectionViewSource).Source = context.Table1.ToList()
(コンテキストは以前に宣言されているため、ここには示されていません)
そうすれば、DataGrid が適切に埋められますが、UI でデータを異なる方法で表示したいと考えています。これは、現在 DataGrid に表示されている方法です (一番上の行は DataGrid のヘッダーです)。
ID Date Item1 Item2 Item3
1 1.1.2000 100 200 300
2 2.1.2000 101 201 301
3 3.1.2000 102 202 302
4 4.1.2000 103 203 303
5 5.1.2000 104 204 304
しかし、次のように表示する必要があります。
1.1.2000 2.1.2000 3.1.2000 4.1.2000 5.1.2000
Item1 100 101 102 103 104
Item2 200 201 202 203 204
Item3 300 301 302 303 304
どうすればこれを達成できますか?CollectionViewSource オプションを探索しようとしましたが、うまくいきませんでした。または、これのためにオブジェクト/エンティティの完全に新しいリストを生成する必要がありますか (できればいいえ)? DataGrid 上のデータはユーザーが編集可能であり、最終的には EF を介してデータベースに永続化する必要があるため、データベースにビュー (=読み取り専用) を作成することは問題ではないと思います。