【发布时间】:2014-02-02 03:56:58
【问题描述】:
我有 2 个表 Customer 和 Order 客户 ID 是主键,它与订单键有外键关系。所以我想在数据网格中显示客户并在由另一个数据网格组成的 RowDetailsTemplate 中排序。
下面是 XAML
<Grid>
<DataGrid AutoGenerateColumns="True" Name="dataGrid1">
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding Order}" AutoGenerateColumns="True"/>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
</Grid>
在代码隐藏中我写了以下代码
public MainWindow()
{
InitializeComponent();
SampleDBEntities1 context = new SampleDBEntities1();
dataGrid1.ItemsSource = context.Customers.ToList();
}
这里我无法绑定内部数据网格。
下面是上下文类
public partial class SampleDBEntities1 : DbContext
{
public SampleDBEntities1()
: base("name=SampleDBEntities1")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<Customer> Customers { get; set; }
public DbSet<Order> Orders { get; set; }
}
以下是实体框架为客户和订单生成的类
public partial class Customer
{
public int ID { get; set; }
public string Name { get; set; }
public string City { get; set; }
public virtual Order Order { get; set; }
}
public partial class Order
{
public int ID { get; set; }
public string Number { get; set; }
public virtual Customer Customer { get; set; }
}
【问题讨论】:
-
我看不到您将视图绑定到 ViewModel。比如说,在 MainWindow 构造函数中添加这一行 - this.DataContext = new MyViewModel()。可能这就是你错过的东西。
-
首先在“context.Customers.ToList()”上放一个断点,看看你是否得到了值。如果您正在获取值,请使用 snoop 并检查为什么您的值没有加载到 Datagrids 中。
标签: c# wpf linq entity-framework data-binding