Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Thomas Claudius Huber Senior Consultant Trivadis AG Das Model-View- ViewModel-Pattern.

Ähnliche Präsentationen


Präsentation zum Thema: "Thomas Claudius Huber Senior Consultant Trivadis AG Das Model-View- ViewModel-Pattern."—  Präsentation transkript:

1 Thomas Claudius Huber Senior Consultant Trivadis AG Das Model-View- ViewModel-Pattern

2 About Thomas C. Huber Senior Autor der umfassenden Handbücher zu WPF und Silverlight

3

4 IT SOLUTIONS, SERVICES, & PRODUCTS TECHNOLOGIES Microsoft, Oracle, IBM, Open Source Integration, Application Performance Management, Security TrainingManaged Services Infrastructure Engineering Application Development Enterprise Content Management BUSINESS INTEGRATION SERVICES IT departments Business departments CUSTOMER Business Intelligence Trivadis solutions portfolio and competences

5 Hamburg Düsseldorf Frankfurt Stuttgart Munich Freiburg Vienna Basel Bern Zurich Lausanne ~370 employees ~170 employees ~20 employees Trivadis facts & figures 11 Trivadis locations with more than 550 employees Financially independent and sustainably profitable Key figures 2010 Revenue CHF 101 / EUR 73 mio. Services for more than 700 clients in over 1800 projects Over 170 Service Level Agreements More than 5'000 training participants Research and development budget: CHF 5.0 / EUR 3.6 mio.

6 Agenda MVVM-Grundlagen Daten und Commands Fortgeschrittene Tasks

7 Model das Datenmodell View die Benutzeroberfläche Controller behandelt Benutzereingaben und modifiziert das Model Model-View-Controller – der Ursprung von MVVM View Controller Model

8 erstmals 2005 von John Gossman beschrieben einer der Architekten von Expression Blend State-of-the-Art-Pattern für WPF- und Silverlight- Anwendungen etabliert Nutzt zentrale Features von WPF und Silverlight Data-Binding Commands Model-View-ViewModel

9 View (wie bei MVC) In WPF/Silverlight XAML mit Code-behind ViewModel Datenklasse spezifisch für das UI Kapselt das Model Model (wie bei MVC) DataSets, XML, Custom Objects,... Model-View-ViewModel VB.NET / C# XAML View ViewModel Model

10 Höhere Wartbarkeit aufgrund von UI-Trennung UI und UI-Logik sind strikter getrennt, wodurch die Anwendung modularer aufgebaut ist und wartbarer wird. Unterstützung von Unit-Tests Ein großer Teil der UI-Logik kann in Unit-Tests eingebunden werden. Workflow zwischen Entwickler und Designer Bessere Arbeitsaufteilung aufgrund des Patterns Stärken von MVVM

11 Agenda MVVM-Grundlagen Daten und Commands Fortgeschrittene Tasks

12 Das ViewModel stellt über Properties Daten und Commands bereit Die View hat das ViewModel im DataContext, womit sich jedes Element in der View an Properties des ViewModels binden lässt Daten und Commands View ViewModel Model XAML Data-Binding DataContext

13 Zum expliziten Setzen der Quelle eines Data-Bindings bietet die Binding-Instanz drei Möglichkeiten: Source-Property ElementName-Property RelativeSource-Property Ist keine der drei Properties gesetzt, hält die Binding-Instanz nach dem DataContext Ausschau: FrameworkElement definiert eine DataContext-Property. Der Wert dieser Property wird über den Element Tree vererbt. Das ViewModel wird in den DataContext der View gesetzt. Der DataContext

14 Ist die Quelle eine Dependency-Property, ist alles ok. Ist die Quelle eine normale.NET Property INotifyPropertyChanged implementieren Ist die Quelle eine Collection INotifyCollectionChanged implementieren ObservableCollection impl. das Interface bereits Data-Binding Benachrichtigungen

15 In WPF/Silverlight ist ein Command ein Objekt, das die Schnittstelle ICommand implementiert Ein Command wird ausgeführt von Objekten, die eine Command-Property besitzen In Silverlight 4: Button, Hyperlink In WPF: Button, MenuItem Commands public interface ICommand{ bool CanExecute(object parameter); void Execute(object parameter); event EventHandler CanExecuteChanged; }

16 Das ViewModel enthält Properties vom Typ ICommand für die Steuerung UIElemente binden sich an diese Properties Um die vom ICommand auszuführende Logik im ViewModel und nicht im ICommand selbst zu haben, werden Delegates genutzt. Commands

17 Agenda MVVM-Grundlagen Daten und Commands Fortgeschrittene Tasks

18 An einer Stelle im ViewModel wird Feedback benötigt. Dem Benutzer muss ein Dialog angezeigt werden. Problem: ViewModel darf kein UI enthalten Nur so bleibt das ViewModel für Unit-Tests geeignet Lösung??? Benutzerinteraktion aus dem ViewModel

19 Lösung: Das ViewModel stellt ein Event bereit. Die Daten werden über spezielle EventArgs übergeben View zeigt im Eventhandler einen Dialog an. Benutzerinteraktion aus dem ViewModel

20 Für den Designer ist es hilfreich, wenn zur Designzeit Beispieldaten zur Verfügung stehen Diese Funktionalität wird über eine IDataProvider- Schnittstelle erreicht Zur Designzeit wird eine andere IDataProvider- Implementation geladen. DataProvider für Designzeit-Daten

21 Unit-Testing [TestMethod()] public void DeleteCommandTest() { MainViewModel_Accessor target = new MainViewModel_Accessor(); target.Speakers = new ObservableCollection { new Speaker(), new Speaker(), new Speaker(), new Speaker()}; target.CurrentSpeaker = target.Speakers[0]; target.DeleteCommand.Execute(null); Assert.AreEqual(target.Speakers.Count, 3); }

22 Agenda MVVM-Grundlagen Daten und Commands Fortgeschrittene Tasks

23 Bessere Unterstützung für den Designer-/Entwicker- Workflow Die Logik liegt im vom UI unabhängigen ViewModel, was gefundenes Fressen für Unit-Tests ist Die Anwendung bekommt eine bessere Strutkur und wird wartbarer Fazit

24 Trivadis TechDays11 Wettbewerb

25

26 © 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.


Herunterladen ppt "Thomas Claudius Huber Senior Consultant Trivadis AG Das Model-View- ViewModel-Pattern."

Ähnliche Präsentationen


Google-Anzeigen