2

私は MVVM ライトを使用しており、View Model を持っていますが、かなりの数のプロパティを取得したため、一部のプロパティを移動する必要があるかどうかわかりません。

ほとんどの場合、それらは単純なプロパティですが、私のビューモデルはちょっと長くなります(437行のプロパティ)

より重要なプロパティを見つけやすくするという意味で、一部のプロパティをモデルに移動することに意味があるかどうか疑問に思っています。

wp7 ビューに 5 つのコントロールがあります。

IsEnabled の 5 つのプロパティ (位置情報サービスがオフの場合、すべてのプロパティが無効になります)l

ユーザーが選択した値を格納する 6 つのプロパティ

3 つのリレー コマンド。

選択内容に基づいてコントロールを非表示/表示する 1 つのプロパティ。

私はまだページに取り組んでいるので、おそらく最終的にはもっとあるでしょう.

ユーザーからの情報を格納する6つのプロパティを取り出してモデルにするべきかどうか疑問に思っています。

次に、RelayCommands、Visablity、Enabled などを ViewModel に配置し、もちろん Model クラスを持つプロパティを 1 つ配置します。

4

2 に答える 2

0

無駄のないビュー モデルを持つことは常に良いことです。後で他の開発者 (または自分自身) が管理および理解するのが容易になります。

ドメイン固有のデータをモデルに取り込むことは、常に良いことです。後で別のビューでそのユーザーを参照したいとします。すべてがビュー モデルに積み上げられているため、新しいビュー モデルを作成するたびに多くのコードを複製する必要があります。良くない。

上記のユーザーを独自のドメイン モデル オブジェクトにプルする場合、1 行のコードでユーザーを参照するだけで済みます (セッターとゲッターを介してそのプロパティに簡単にアクセスできます)。

MVVM はモデル、ビュー、ビューモデルの略であり、モデルがないと、ほぼ混沌としたコードと大量のレプリケーションに行き詰まる可能性があることを思い出してください。コードの複製は、コピー中の人的エラーやその他の多くの頭痛の種につながります。


これが一般的な考え方です。「一時的な」プロパティ (ユーザーが記入するもの) をどのように管理すべきかについて質問されていることは承知しており、ここでも上記と同じ規則が適用されると言わざるを得ません。いくつかのモデルを持つことはまったく悪いことではありません (エンタープライズ環境での作業から何かを学んだ場合、コードを扱いやすいサイズに分割することを恐れていません)。

使用できる別のアプローチは、継承元のビュー モデルの親クラスを作成することです。「すべてのビューにこれらが必要」なプロパティをここに配置すると、特定の情報がスーパークラスを継承するビュー モデルに残されます。

3 番目に気づいたことは、各コントロールに「isEnabled」プロパティがあることです。あなたが描いたように、「オールオアナッシング」シナリオがある場合、必要なのは1つだけです。そのプロパティをすべての要素の可視性にバインドし、可視性の管理を 6 倍簡単にします =)

これでいくつかの問題が解決することを願っています! =)

于 2013-08-01T22:42:18.460 に答える
0

ビュー用のものは何でも、viewModel にある必要があります。理想的には、ビューも必要であるという理由だけでモデルを更新したくないでしょう。そのようなものはすべてViewModelに入ります。上で提案したように、ビューモデルを分割できます。ビュー モデルへのビューの 1 対 1 のマッピングが存在する必要はありません。ビューは、多くのビュー モデルで構成できます。

437行の物件というのは、437物件あるということですか?それがあなたのビュー自体にとっては多すぎる場合、私は使いやすさのためにあなたのビューをより単純なものに分割することを再考します.

MVVM の使用中に通常遭遇する一般的なシナリオをいくつか紹介します

于 2013-08-02T11:12:41.120 に答える