私はWPFとMVVMを使い慣れていないので、自分のアプリを設計する方法に多くの苦労をしています(ここではたくさんの質問があります)。私はSQLのバックエンドを持っており、LINQTOSQLが生成するクラスが私のモデルになるようにLINQtoSQLを使用しています。モデルクラスをビューから離しておく方法の包括的な例はまだ見ていません - 私が見ている例では、ViewはModelClass.Somethingを参照するViewModelプロパティを持つ代わりにModelClass.Somethingにバインドしています。私はこれが悪いと思うことで正解なのですか(ビューフィールドがdbで変わるとビューが壊れます)?MVVMデザインパターンの問題
私が現時点で苦労しているのは、ドロップダウンリストです。例:IDとテキストフィールドを持つMessageTypeというルックアップテーブルと、それらを取得するリポジトリメソッドがあります。私の見解では、DisplayMemberPathとSelectedValueパスをModelのMessageTypeクラスのフィールドにバインドしないようにしたいので、新しいクラスを作成してそのクラスのプロパティをViewModelに公開する必要がありますか?このように移入
public class MessageTypeViewModel : ViewModelBase
{
public MessageTypeViewModel(MessageType t)
{
MessageTypeText = t.messageTypeText;
MessageTypeId = t.messageTypeId;
}
public string MessageTypeText { get; private set; }//bind DisplayMember and SelectedValue to these properties
public int MessageTypeId { get; private set; }
}
:このよう
get
{
if (textMessageSelectionOptions == null)
{
var list = repository.GetMessageTypes().Select(x=>new MessageTypeViewModel(x)).ToList();
textMessageSelectionOptions =new ReadOnlyCollection<MessageTypeViewModel>(list);
}
return textMessageSelectionOptions;
}
また、私は私が私ことを考えるとmission.MessageTypeにコンボボックスのSelectedItemのをバインドしますので、どのようにmessageTypeする外部キーを持っているミッションのオブジェクトを持っています今、この新しいクラスを持っていますか?ミッションオブジェクト、その子どもとその親のパターンを取得するのは本当に苦労しています。MVVMを使用してCRUD操作を行っている包括的なサンプルは見つかりません。私は上を行きますか、何かを見逃していますか?
あなたのビューモデルが実際にクラスに動作を追加しない限り(例えば、 'INotifyPropertyChanged'実装やビュー固有のコマンド/プロパティ)、ビューモデルではラップしません - 不必要なメンテナンスが発生します –