可以使用Entity Framework和WPF DataGrid进行双向数据绑定吗?

时间:2011-01-01 10:38:28

标签: c# wpf entity-framework entity frame

我正在使用SQL CE,WPF,实体框架3.5sp2和iam尝试使用数据网格作为我的订单输入控件用户输入产品订单。  我计划将其绑定到enitiy frmae工作模型,abd寻找2路更新?

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        using (MasterEntities nwEntities = new MasterEntities())
        {
          var users = from d in nwEntities.Companies
        select new CompanyRowModel{ CompanyId = d.CompanyId, CompanyName       d.CompanyName, Place = d.Place }

              listBox1.DataContext = users;
              dataGrid1.DataContext = users;
        }           
      }

      public class CompanyRowModel
      {
        public int CompanyId { get; set; }
        public string CompanyName { get; set; }
        public string Place{ get; set; }
      }

我的xaml编码就像这样

   <Grid>
     <ListBox Name="listBox1" ItemsSource="{Binding}"  />
    <Button Content="Show "  Name="button1" Click="button1_Click"  />

    <DataGrid AutoGenerateColumns="False" Name="dataGrid1" ItemsSource="{Binding}" >
      <DataGrid.Columns>
          <DataGridTextColumn Header=" ID"     Binding="{Binding CompanyId}"/>
          <DataGridTextColumn Header="Company Name"  Binding="{Binding CompanyName}"/>
          <DataGridTextColumn Header="Place"    Binding="{Binding Place}" />
        </DataGrid.Columns>
    </DataGrid>
    <Button Content="Save"  Name="button2" VerticalAlignment="Bottom" Click="button2_Click" />
</Grid>

已编辑:

我做了@vorrtex显示的更改,但是,然后我添加了另一个按钮来保存chages,在按钮点击事件中我添加了以下代码,但显示正在更新错误

  private void button2_Click(object sender, RoutedEventArgs e)
    {
         nwEntities.SaveChanges();
    }

3 个答案:

答案 0 :(得分:1)

是的,这是可能的。


好的,在你的编辑之后

您现在将选定的属性值存储在新的特殊类CompanyDataRowModel中。

这不是一个被跟踪的课程。要么编写自己的自我跟踪实体类,要么使用Company类。

答案 1 :(得分:1)

您遇到此代码的问题:

select new { d.CompanyId, d.CompanyName, d.Place }

此匿名类中的属性是只读的,因此您应该创建具有这些属性的真实类。

public class CompanyRowModel
{
    public int CompanyId { get; set; }
    //...
}
//...
var users = from d in nwEntities.Companies
            select new CompanyRowModel{ CompanyId = d.CompanyId, CompanyName = d.CompanyName, Place = d.Place }

答案 2 :(得分:0)

您可能对 WPF Application Framework (WAF) BookLibrary 示例应用感兴趣。它使用实体框架和SQL CE作为DB,它包含WPF DataGrid。