2016-07-06 6 views
1

これを複雑にするのは間違いないかもしれません。私は今、いくつかのチュートリアルを読んでいますが、何かを理解していません。組み込みビューモデルの使い方

私は、観察可能なコレクションがモデルアイテムのリストにマッピングされていることを理解しました。

Model 
    List family 

View model 
    Observable collection families(model.families) 

しかし、私は今、二つ読み:

  1. データコンテキストビューモデルオブジェクトへの常にポイントを。

  2. 監視可能なコレクションは、そのためビューモデル

私の混乱の集まりでなければなりません。ビューのコンボボックスがファミリのリストにバインドされ、ファミリが選択されると、残りのコントロールがそのファミリの詳細になります。

ビューモデルのプロパティの役割の概念は理解していますモデルデータとビューデータの間のメカニズムです。そして、それぞれのプロパティはonpropertychangedを発生させます。

お使いのモデルにファミリオブジェクトのリストがある場合は、どのようにfamilyviewmodelsの観測可能なコレクションを作成しますか?

これに尋ねるより適切な場所がある場合は、親切に私に指示してください。質問を削除します。

私はObservableCollection (model.families)が正しいと思いました。次に、選択したコンボオブジェクトのメンバーに値をバインドします。それは確かに動作します。しかし、私が読んだことから、私は上記のように正しくないものがあると感じています。

私の頭痛を和らげてくれてありがとう。

答えて

1

あなたの質問は少なくとも部分的に「意見に基づいて」いるようです。したがって、あなたはhttp://programmers.stackexchange.comまたはhttp://codereview.stackexchange.comに入力を求めている方がよいでしょう。後者を選択する場合は、は、あなたの質問をはっきりと示す良いMinimal, Complete, and Verifiable code exampleを作成し、そのコード例に関してあなたの質問を提示する必要があります。

お使いのモデルにファミリオブジェクトのリストがある場合、どのようにファミリービューモデルの観測可能なコレクションを作成しますか?

ここでコード例のように何も提示していないので、正確な指針を与えることは不可能です。しかし、あなたのObservableCollection<Family>Familyオブジェクトのリストをプロキシするのと同じように、FamilyオブジェクトをプロキシするFamilyViewModelを作成することを止めるものはありません。その後、代わりにObservableCollection<FamilyViewModel>を使用することができます。


これは、あなたの質問に示されているように、「実用的なプログラミングの問題」の程度です。つまり、私がコメントしている限り、デザインパターンはコードの作成と保守を容易にすることを目的としています。あなたがデザインパターンによって課された教義に従うことを試みることが、良い、維持可能なコードの方法になっていることがわかったら、少なくともその特定の瞬間に、その特定の教義を放棄する時です。

特に、「ビューモデル」と「モデル」の間の線がぼやけることがあります。場合によっては、プログラムは主にユーザーとのやり取りに関するものであり、ビューモデルはすべて必要です。他のケースでは、プログラムは主にビジネスロジックであり、既存のビジネスロジックデータ構造をラップするためのまったく新しいビューモデルを書くことは過度のものです。懸念事項の分離は有用であり得る。 UIが完全に不要な他のコンポーネントとやり取りする必要がある場合や、高価で再作成が困難なビジネスロジックデータ構造に縛られることなくUIコードをテストできるようにしたい場合。しかし、コンセプトにあなたの手を縛らないでください。たとえば、簡単なデータ構造を持ち、UI要素に直接マップすることができます。リストベースのコントロール用のテンプレートでは、そのデータ構造を直接「ビューモデル」として使用すると何も問題はありません。

もちろん、自分の立場に同意しない人もいますし、場合によっては強くなる人もいます。したがって、あなたの質問の "意見に基づく"性質。それは間違いなくここで閉鎖されるだろう質問の種類です。 IMHO、より良い客観的な回答が必要な場合は、あなたの質問を良いMCVEで提示し、の具体的なの側面を客観的な方法で対処することができます。ビジネスロジックのデータ構造をビューモデルと互換性のあるデータ構造にマップする方法)。

関連する問題