实体框架&WPF数据网格绑定

本文关键字:数据网 网格 绑定 数据 WPF 框架 实体 | 更新日期: 2023-09-27 18:12:32

我有一个非常简单的小应用程序,使用EF和WPF。我正在尝试为我们的小团队创建一个非常轻量级的"项目跟踪器"。这些类看起来像:

class Project
{
    public int ProjectId { get; set; }
    public string Name { get; set; }
    public List<ProjectNote> ProjectNotes { get; set; }
    public string Status { get; set; }
    public string Description { get; set; }
    public string ProjectLead { get; set; }
}
class ProjectNote
{

    public int ProjectNoteId { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime DateEdited { get; set; }
    public string CreatedBy { get; set; }
    public string LastEditedBy { get; set; }
    public string Detail { get; set; }
    public int ProjectId { get; set; }
}

我希望能够在数据网格中显示以下字段:

  1. 项目。
  2. 项目。
  3. ProjectNote(最近的)。细节

基本上,我想有一个数据网格,允许我的用户看到一个项目的最新笔记,并在需要时编辑它们。

我有麻烦弄清楚如何结构我的代码(我使用代码优先/POCO),以允许用户从Datagrid视图创建一个新的ProjectNote。我不知道我是否需要我的项目类的另一个属性来允许单个ProjectNote,或者如果我可以编码这个(通过ViewModel),以便在用户编辑包含项目数据的Datagrid时正确实例化一个新的ProjectNote。

如何创建允许跨多个实体编辑/创建的数据网格?

实体框架&WPF数据网格绑定

我建议创建一个ViewModel,也许是ProjectNoteViewModel,它包含了注释和项目。然后,您将ProjectNoteViewModels的集合/列表绑定到DataGrid .

或者,您可以向ProjectNote类添加项目导航属性,这将允许您包含项目。名称和项目。ProjectNote的DataGridRow中的描述。如果这种关系很少或没有业务逻辑/复杂性,那么这种方法就可以工作,但是如果需要执行任何复杂性或业务规则,我建议使用ViewModel。

这篇文章很好地介绍了如何同时使用DataGrid和MVVM。基本上,如果您将DataGrid绑定到某种类型的列表,则DataGrid将自动为您创建对象的新实例,并在用户单击网格底部的空行时将其插入集合中。