Verfasst von: bletra | 9. Mai 2011

WPF: Von Spaghetticode zu MVVM – Teil 4 von 9

In dieser Artikelserie möchte ich eine einfache Applikation, in eine testbare Applikation nach dem MVVM-Pattern umwandeln:

  1. Beispielapplikation mit Spaghetticode
  2. Refactoring 1: Model
  3. MVC, MVP, Presentation Model
  4. MVVM
  5. ICommand
  6. Binding
  7. Refactoring 2: ViewModel
  8. Refactoring 3: View
  9. Zusammenfassung

Model View ViewModel (MVVM)

Das MVVM-Pattern reiht sich in die Architekturmuster MVC, MVP und Presentation Model ein, wie ich sie im letzten Artikel eingeführt habe. MVVM ist ein Pattern, das sich bei WPF- und Silverlight-Applikationen zunehmend verbreitet. WPF möchte die Zusammenarbeit zwischen Designern und Entwicklern verbessern. Beide sollen mit der gleichen Codebasis arbeiten. Die deklarative Beschreibungssprache der Oberfläche Extensible Application Markup Language  (XAML) und Expression Blend  bieten die technische Voraussetzungen hierfür. XAML und der zugehörige C#-Code sind zwei verschiedene Sprachen für dasselbe Objektmodel. Jedes drag&drop, jedes XAML-Tag und jedes XAML-Attribut kann 1:1 auch in C# implementiert werden. Der XAML-Code kann Basis einer WPF- oder Silverlight-Applikation sein.

Das MVVM-Pattern entspricht prinzipiell dem Presentation Model-Pattern. Es verdient einen eigenen Namen, da es speziell die Möglichkeiten der .Net-Plattform nutzt, Presentation Model ist also das allgemeine Pattern und MVVM eine Spezialisierung für WPF und Silverlight.

Das ViewModel kapselt jegliches Verhalten (Befehle, Teil 5 dieser Serie) und Zustände der View. Ob ein Feld sichtbar ist oder nicht, der Cursor ein Wait-Cursor anzeigen soll, den Inhalt eines Textfeldes oder einer Listbox, dies alles sind Properties des ViewModels. Daher passt der Name ViewModel tatsächlich besser als Presenter, denn das ViewModel verwaltet die Daten in Bezug auf die View. Änderungen der View werden dem ViewModel über einen entsprechenden Mechanismus (Binding, Teil 6 dieser Serie) mitgeteilt, analog werden Änderungen des ViewModels der View mitgeteilt. Die folgende Abbildung stammt aus einem Artikel von Nikhil Kothari und veranschaulicht das MVVM-Pattern.

In den nächsten beiden Artikeln möchte ich die Basistechnologien Binding und Commands einführen, die MVVM massiv nutzt.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

Kategorien

%d Bloggern gefällt das: