MVVMを使用してwpfアプリケーションを開発しています。ViewModelでモデルをラップし、DataGridで使用する方法は?
今のところ、モデルエンティティ、ビューごとに1つのビューモデル、およびコースビューがあります。
私のエンティティの例があります:
public class Group : INotifyPropertyChanged
{
public string GID { get; set; }
public string Label { get; set; }
public DateTime Date { get; set; }
public int Rank { get; set; }
}
public class Person : INotifyPropertyChanged
{
public string Name { get; set; }
public Group Group { get; set; }
}
(私は簡素化するための通知を削除)
現在、私はモデルのプロパティを繰り返し、中間クラスをthrought ViewModelに、いくつかを追加するために、私のモデルエンティティをマップにはその他。概要に:モデル< - >コンポーネント< - > viewmodel。しかし、これは私にとって無駄な複雑さを増やします。
さらに、私はデータグリッドに人のリストを表示する特別なケースがあります。あなたが見ることができるように
は、グループの列には、前のドロップダウンリストで選択したグループに基づいてフィルタリングされ、開始日と終了日とレベル]列によってフィルタリングドロップダウンです。
私の質問は次のとおりです。どのようにモデルをviewmodelでラップするのですか?そして、このケースに特化しています。
単純に、モデルクラスからビューモデルクラスを派生させることができます。 – Clemens
あなたの答えをありがとう、私はこのようにしてみました。クラスPersonViewModel:Person {} 'と' class GroupViewModel:Group {} 'ですが、Personのグループプロパティを非表示にする必要がありました。 GroupViewModelプロパティ。 私はそれが最善の方法か、おそらくどこかで間違っているとは確信していません:) –
私はプロキシの背後にあるので、画像が見えません。モデルクラスからコンポーネントクラスを派生させ、ビューモデル内のコンポーネントコレクションを公開してビューにバインドするとどうなりますか? – XAMlMAX