データ アクセス レイヤーに多対多の関係があるとします (CodeFirst - EF を使用)。
public class Report{
public int ReportId {get;set;}
public string ReportName {get;set;}
public List<ReportKeyword> ReportKeywords {get;set;}
}
public class ReportKeyword{
public int ReportId {get;set;}
public int KeywordId {get;set;}
}
public class Keyword{
public int KeywordId {get;set;}
public string KeywordName {get;set;}
public List<ReportKeyword> ReportKeywords {get;set;}
}
レポートのリストビューを表示するユーザー インターフェイス (WPF ビュー) を作成する必要があり、各レポートはそのキーワードの子リスト ビューを表示する必要があります。したがって、これはViewModelで簡単に実行できますが、この目的のためにViewModelをモデル化する最良の方法は何ですか. 必要なプロパティを備えた VM を作成する必要がありますか? これは、Keywords のコレクションを含む、レポート オブジェクトから表示したいすべての同様のプロパティを持つ ReportViewModel です。
public class ReportViewModel : ViewModelBase<ReportViewModel>
{
private string _reportName;
public string ReportName
{
get { return _reportName; }
set
{
_reportName = value;
NotifyPropertyChanged(model => model.ReportName);
}
}
private ObservableCollection<Keyword> _keywords;
public ObservableCollection<Keyword> Keywords
{
get { return _keywords; }
set
{
_keywords = value;
NotifyPropertyChanged(model => model.Keywords);
}
}
}
少し退屈な気がします。コレクションを作成してグリッドに表示するにはどうすればよいですか? レポートが選択されたときに、Keywords コレクションを設定するメソッドを呼び出す必要がありますか? このシナリオのより良い解決策はありますか?