2010-12-08 7 views
0

私は、SilverlightでMVVMを使用していますが、問題は、より一般的に適用されます。私はそれをどのように言いたいのかよくわからないので、例を使用します。MVVMのベストプラクティス - それはどのようにビュー固有でなければなりませんか?

のは、私がInboxItemViewModel呼ばInboxItemViewと対応するビューモデルと呼ばれるビューを持っているとしましょう。私は、モデル内のプロパティは、IsUnreadがtrueの場合、受信トレイのアイテムがビューに太字として表示します。

私の質問は、それは

public bool IsUnread { 
    get { return _model.IsUnread; } 
} 

のようなプロパティを公開し、ビューに値コンバータを使用することが望ましいですか?または、VMが太字のテキストを直接表示すると、

public FontWeight IsUnread { 
    get { return _model.IsUnread ?? FontWeights.Bold : FontWeights.Normal; } 
} 

となり、ビューのこのプロパティに直接バインドする必要がありますか?明らかにこれらの両方は正常に動作しますが、MVVMで一般に受け入れられている方法は何ですか?

答えて

1

最初のオプションは、これまでで最良の選択です。 ViewModelは未読メッセージの表示方法を決めるべきではありません。それはあなたのビューのタスクです。

1

ViewModelは、Viewが消費するのは簡単だが、表示情報を課すのではない方法でモデルの状態を公開することになっているため、deisgnerはそれを表示する方法を決定できます。

私は時に未読状態変化Viewが通知されるようにViewModelにはINotifyPropertyChangedの実装を確認して、最初のオプションのために行くと思います。

編集: これにより、さまざまな場所で未読状態​​をさまざまな方法で表示したり、状態の変更にアニメーションを追加したりすることが容易になります。

関連する問題