2017-12-20 27 views
2

こんにちは、Xamarinに新規で、MVVMのコードをちょっとしたものにしていたので、純粋なMVVMを使用することをお勧めしました。Xamarin&MVVMどのように?

私はこの例を見て:

  1. Example1
  2. Example2

しかし、私はまだ適切にView、何であるか、Modelが何であるかを私のコードで定義することはできません。 ModelView

MVVMのプロジェクトの正しい構造を教えてもらえますか?

+0

ViewModelsが不足しているようです。ビュー(ListViewを保持しているビュー)とモデル(StoreModel)がありますが、それらを「接続する」ViewModelが不足しています。 ViewModelを作成してコントロールを作成するだけです。 (ListView)はそのプロパティとイベントをそのモデルにバインドします。 –

+0

@Tobias Theelバインディング自体を処理する必要のあるCustomRenderersを持っていなければ非常に簡単です。Androidの場合はCellViewがあります。 –

+0

なぜ私はビューのプロパティをviewModelにバインドできないのか分かりません。その部分をもう少し詳細に説明してください。 –

答えて

4

私は従業員

PCLの参考例で純粋なMVVMの構造を説明してみましょう:

=>モデル:

= employee.cs例clases.forすべてのモデルが含まれています>ビュー:すべてのxamlページが含まれます。たとえば、employeeList.xamlなど

=> ViewModel:すべてのビューモデルが含まれます。バインド可能なプロパティ、コマンド、およびadd、updateなどの操作のための他のすべてのメソッドを実装することができるemployeeViewModel.csは、このviewmodelをバインドしてbindingContextを使用して表示するようになりました。

=> DependencyService:uは別のプラットフォームに

のAndroidを実装するインターフェイスを定義します。

=> DependencyService:あなたの条件に応じて、プラットフォーム固有のインターフェイスを実装します。

=> CustomRenderer:プラットフォームに応じて特定の要件に合わせてカスタムレンダリングを作成します。

EDIT:

は変化し続け、あなたのビュー(UI)での従業員の合計なしを表示する例を参照

したがって、INotifyPropertyChangedを実装するviewmodelにバインド可能なプロパティEmpCountを作成できます。今ではどんな方法でも設定することができます。

このビューモデルをpage.itsのバインディングコンテキストとして設定しているので、UIに自動的に反映されます。

+1

'ContentPage.BindingContext'と' {Binding Property} 'と' BindableProperty'についてはどうしたら理解できないのでしょうか... –

+0

@Tiago_nes私のEDITを確認してください。あなたがまだ混乱している場合私に知らせてください。 –

+1

'ObservableCollection'について同じですか? コレクションリジッドを使用するときに 'INptifyPropertychanged'を実装する必要はありませんか? –

関連する問題