2013-05-07 120 views
2

我有一個非常簡單的小應用程序使用EF和WPF。我正在努力爲我們的小團隊創建一個非常輕量級的「項目跟蹤器」。這些類的樣子:實體框架和WPF Datagrid綁定

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; } 

} 

我希望能夠在DataGrid中顯示以下字段:

  1. Project.Name
  2. Project.Description
  3. (最近)ProjectNote。詳細信息

基本上,我想要一個Datagrid,它允許我的用戶查看Projec的最新註釋t並編輯它們,如果需要的話。

我無法弄清楚如何構建我的代碼(我使用Code First/POCO)來允許用戶從Datagrid視圖創建一個新的ProjectNote。我不知道是否需要Project類的另一個屬性以允許使用單個ProjectNote,或者如果我可以編寫此代碼(通過ViewModel)以在用戶編輯包含項目數據的Datagrid時正確實例化新的ProjectNote 。

如何創建允許跨多個實體編輯/創建的數據網格?

+0

你應該在你的視圖模型上有一個'ProjectNote'屬性,叫做'NewNote',然後構造你的數據網格以包含新屬性所需的細節,以便用戶可以輸入它們。 – mattytommo 2013-05-07 14:30:20

+0

如果我這樣做了,我怎麼能確定(或者我應該在哪裏放置代碼),我正在獲取該項目在該屬性中的最新備註? – 2013-05-07 14:48:32

回答

2

我會建議創建一個ViewModel,也許ProjectNoteViewModel,它包含註釋以及項目。然後,將您的收集/ ProjectNoteViewModel列表綁定到DataGrid

或者,您可以將項目導航屬性添加到ProjectNote類,這將允許您在項目筆記的DataGridRow中包含Project.Name和Project.Description。如果這種關係很少或根本沒有業務邏輯/複雜性,那麼這種方法就行得通,但如果需要強制執行任何複雜性或業務規則,我建議使用ViewModel。

This article提供了一個很好的使用DataGrid和MVVM一起走過。基本上,如果您有0123B的某個列表,DataGrid會自動爲您創建一個新的對象實例,並在用戶單擊網格底部的空行時將其插入到集合中。

+0

這是驚人的,經過三天的搜索和閱讀很多帖子,我沒有找到該鏈接。謝謝你的建議!我現在應該能夠得到這個工作。 – 2013-05-07 14:45:26

+0

我聽到你的聲音,有時就像在乾草堆裏找到針一樣!祝你好運。 – 2013-05-07 14:50:47