2017-12-20 6 views
2

Hallo, ich bin neu in Xamarin und mir wurde geraten, reine MVVM zu verwenden, weil mein Code ein bisschen eine Mischung zwischen MVVM und einfach nichts war.Xamarin & MVVM Wie?

ich an diesen Beispielen sah:

  1. Example1
  2. Example2

Aber ich kann in meinem Code immer noch nicht richtig definieren, was die Model ist, was ist die View und was die ModelView.

Können Sie mich auf die richtige Struktur meiner Projekte nach der MVVM zeigen?

+0

Offenbar fehlen Ihnen die ViewModels. Sie haben eine Ansicht (diese Ansicht, die Ihre ListView enthält) und ein Model (StoreModel), aber Sie verpassen nur ein ViewModel, das sie verbindet. Erstellen Sie einfach ein ViewModel und lassen Sie Ihre Steuerelemente los. (ListView) bind es Eigenschaften und Ereignisse auf dieses Modell und Ihre getan –

+0

@ Tobias Theel Das wäre sehr einfach, wenn ich nicht die CustomRenderers, die mit den Bindungen selbst beschäftigen müssen, und im Fall von Android hat eine eigene CellView. –

+0

Ich verstehe nicht, warum das verhindert, dass Sie die Ansichtseigenschaften an ein viewModel binden. Können Sie diesen Teil bitte etwas ausführlicher erklären? –

Antwort

4

Lassen Sie mich versuchen, mit Referenzbeispiel der Mitarbeiter reinen MVVM Struktur zu erklären

PCL:

=> Modell: das alle Ihr Modell enthält clases.for Beispiel

= Employee.cs> Ansicht: welche alle xaml-Seiten enthält. Zum Beispiel employeeList.xaml usw.

=> ViewModel: welches das Viewmodel enthält. Beispiel: employeeViewmodel.cs, in dem Sie bindbare Eigenschaften, Befehle und alle anderen Methoden für Operationen wie Hinzufügen, Aktualisieren usw. definieren können. Jetzt binden Sie dieses Ansichtsmodell mit bindingContext ein.

=> DependencyService: define-Schnittstelle, die u

Android in anderen Plattform implementieren möchten:

=> DependencyService: Implementierung plattformspezifische Schnittstelle entsprechend Ihrer Anforderung.

=> CustomRenderer: Erstellen Sie benutzerdefinierte Rendering hier für spezifische Anforderung.nach Plattform.

EDIT:

zum Beispiel sehen Sie gesamte Anzahl der Mitarbeiter auf Ihrer Ansicht (UI), die ändernder angezeigt werden sollen.

können Sie die bindbare Eigenschaft EmpCount in viewmodel erstellen, die INotifyPropertyChanged implementiert. und jetzt können Sie es in jeder Methode einstellen.

Jetzt, da Sie dieses Ansichtsmodell bereits als Bindungskontext von page.its festgelegt haben, wird der Wert automatisch auf der Benutzeroberfläche angezeigt.

+1

Was ist mit den 'ContentPage.BindingContext' und den' {Binding Property} 'und' BindableProperty' Ich kann nicht wirklich verstehen, wie sie verwendet werden ... –

+0

@Tiago_nes bitte überprüfen Sie meine EDIT. und lassen Sie mich wissen, wenn Sie noch etwas Verwirrung haben –

+1

Selben über 'ObservableCollection'? Ich brauche 'INptifyPropertychanged' nicht zu implementieren, wenn ich die Sammlung rigth verwende? –

Verwandte Themen