我通过实体框架将 WPF DataGrid 绑定到实体。我没有找到以我想要的方式在 DataGrid 上呈现数据的方法,而且我不能/不想接触源数据库数据或实体。
生成的实体模型只有一个表(“Table1”),具有以下属性:
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 的源:
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 持久化回数据库,因此我认为在数据库中创建视图(=只读)是不可能的。