2010-12-20 12 views
0

MVVM WPFアプリケーションがあり、ビューに「ユーザー設定」が挿入されています。これらの設定には、最後に使用された検索用語やデータグリッド上の列幅などが含まれます。これはうまく機能し、ViewModelはこれらの設定をView Specificであるとして認識せず、ViewModelを複数のビューで共有できます。XAML MVVMマルチバインド

これらの値は、ビューのXamlにバインドされています。

ただし、一部の設定では、ViewModelのプロパティに干渉するレベルがあります。

例:

ビューモデルは、クエリが戻す結果の数を制限するために使用されるpublic int MaxResults { get; set; }の性質を有しています。

ユーザーがこの値をたとえば100から50に変更すると、理想的にはこれをビューの設定に保存することができます。

私は同じ要素をビューの設定、およびビューモデルのプロパティの両方に結合することができます方法:これViewが値50を使用している次の時間を有効にするというより100

私の最初の質問に使用されていますか?私はマルチバリューコンバータを考えていますが、この操作をより楽しく行う方法があるかどうかは不明です。両方のバインディングが2つの方法である必要がありますが、恐ろしい更新ループには入りません。

私の2番目の質問:

時々私はViewModelには、ビューの設定によって提供された値よりも優先したいと思います。あるバウンド値が他のバウンド値よりも優先されるようにするための提案があれば、私は疑問に思います。

すべてのコメント/ご質問/ご質問をいただければ幸いです。

+1

Stack Overflowに関する質問は無料です.2つの質問がある場合は、無料で2つの質問を開くことができます。 –

答えて

0

ViewModelにこれらの設定を知らないという点はありません。私は、あなたのVMをこれらのユーザーの好みの制御下に置いて、バインディングを介してビューを選択させるでしょう。

これは、ビューモデルからこれらの環境設定を制御できるという利点があります。また、ユーザー設定がユニットテストを介してVMに正しくロードされていることをテストできます。

あなたのVMはモデル上のビューであるため、VMを介してロードされたユーザーの環境設定がここで理にかなっており、これらのようなエッジケースを持つ可能性は非常に低くなります。

関連する問題