实体框架&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; }
}
我希望能够在数据网格中显示以下字段:
- 项目。
- 项目。
- ProjectNote(最近的)。细节
基本上,我想有一个数据网格,允许我的用户看到一个项目的最新笔记,并在需要时编辑它们。
我有麻烦弄清楚如何结构我的代码(我使用代码优先/POCO),以允许用户从Datagrid视图创建一个新的ProjectNote。我不知道我是否需要我的项目类的另一个属性来允许单个ProjectNote,或者如果我可以编码这个(通过ViewModel),以便在用户编辑包含项目数据的Datagrid时正确实例化一个新的ProjectNote。
如何创建允许跨多个实体编辑/创建的数据网格?
我建议创建一个ViewModel,也许是ProjectNoteViewModel,它包含了注释和项目。然后,您将ProjectNoteViewModels的集合/列表绑定到DataGrid
.
或者,您可以向ProjectNote类添加项目导航属性,这将允许您包含项目。名称和项目。ProjectNote的DataGridRow
中的描述。如果这种关系很少或没有业务逻辑/复杂性,那么这种方法就可以工作,但是如果需要执行任何复杂性或业务规则,我建议使用ViewModel。
这篇文章很好地介绍了如何同时使用DataGrid
和MVVM。基本上,如果您将DataGrid
绑定到某种类型的列表,则DataGrid
将自动为您创建对象的新实例,并在用户单击网格底部的空行时将其插入集合中。