1

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 を介してデータベースに永続化する必要があるため、データベースにビュー (=読み取り専用) を作成することは問題ではないと思います。

4

0 に答える 0