2

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.Detail

基本的に、ユーザーがプロジェクトの最新のメモを表示し、必要に応じて編集できるデータグリッドが必要です。

ユーザーが Datagrid ビューから新しい ProjectNote を作成できるように、コードを構造化する方法がわかりません (Code First/POCO を使用しています)。単一の ProjectNote を許可するために Project クラスの別のプロパティが必要かどうか、またはユーザーが Project データを含む Datagrid を編集しているときに新しい ProjectNote を適切にインスタンス化するために (ViewModel を介して) これをコーディングできるかどうかはわかりません.

複数のエンティティにわたって編集/作成できるデータグリッドを作成するにはどうすればよいですか?

4

1 に答える 1

2

Note と Project を含む ViewModel (おそらく ProjectNoteViewModel) を作成することをお勧めします。次に、ProjectNoteViewModels のコレクション/リストを にバインドしますDataGrid

または、Project ナビゲーション プロパティを ProjectNote クラスに追加することもできます。これにより、Project.Name と Project.Description をDataGridRowProjectNote に含めることができます。この関係にビジネス ロジックや複雑さがほとんどまたはまったくない場合、このアプローチは機能しますが、強制する必要がある複雑さやビジネス ルールがある場合は、ViewModel を使用することをお勧めします。

この記事でDataGridは、と MVVM を一緒に使用する方法について詳しく説明します。DataGrid基本的に、何らかのリストにDataBound があるDataGrid場合、ユーザーがグリッドの下部にある空の行をクリックすると、オブジェクトの新しいインスタンスが自動的に作成され、コレクションに挿入されます。

于 2013-05-07T14:38:06.830 に答える