Session: Gängige Fehler bei WPF-UIs

Speaker: Daniel Greitens (Maximago)

Gängige Fehler bei der Implementierung von User Interfaces mit WPF und Silverlight vermeiden.
Daniel Greitens beginnt mit einer kurzen Einleitung woher er kommt (Maximago) und was er macht (Big Boss : ) ).
Er beschreibt zwei klassische Rollen:

    1. – Nummer eins, eine Firma erkennt es wird ein Spezialist benötigt und fragt an.
      – Die zweite Gruppe sind Frimen die einen Retter in der Not benötigen weil sie dachten WPF ist ja auch wie Win Forms.
  • Ab jetzt folgt nur eine ganz kurze Übersicht zu den genannten Fehlern mit einem Beispiel und auch einem kurzen Hinweis zu einer möglichen Lösung.

    Fehler Nr. 1- Mangelnde strategische Unterstützung:
    Beispiel:

  • – Wir haben eine Firma mit 80 Mitarbeitern aber zwei Auszubildende setzen wir an das Projekt um MVVM zu implementieren.
    – Es gibt Codingguidelines aber nicht für XAML.
  • Lösung: – Mitarbeiter schulen (ganzheitlicher Ansatz)

    Fehler Nr. 2 – Keine klare Schichtentrennung
    Beispiel:

  • – Code Behind verwenden, erzeugen von Elementen im Code, harte Refferenzen aus dem Code auf XAML-Elemente
  • Lösung:

  • – MVVM bei allen Projekten ohne wenn und aber. Keine Ausnahmen zulassen.
    – Code Behind gehört grundsätzlich leer!
    – Verbindung UI mit Daten über Binding
    – Data Templates verwenden
  • Fehler Nr. 3 – Design-Atttribute in Views verstreut
    Beispiel:

  • – Implizite Größen- , Farbe-, Ausrichtungs-,.. Angaben in View verstreut
    – verwenden von impliziten Styles
  • Lösung:

  • – verschiedene Ausprägungen eines Controls als Custom-Control mit impliziten Styles oder Konfigurationseigenschaften des Controls
  • Fehler Nr. 4 – Jeder baut View wie es ihm passt
    Beispiel:

  • – Views werden trotz gleichem Aufbau unterschiedlich implementiert
  • Fehler Nr. 5 – Keine Koppelung von Interaktionselementen
    Beispiel:

  • – User Controls mit vielen harten Referenzen von Code-Behind zu XAML
    – Gezeigt wird ein Colorpicker von Codeplex
  • Lösung:

  • – gut implementierte Custom Contorls
    – Vererbung nutzen
    – Anpassung an Datacontext per Converter
  • Fehler Nr. 6 – Unvorteilhafte Ressourcen-Strukturen
    Beispiel:

  • – zu große Resource-Dictionaries und die damit verbundenen Redundanzen
  • Lösung:

  • – Resource-Dictionaries klein halten
    – UI-Konfiguration isolieren
    – Zusammengehörige Teile isolieren
    – Wiederverwendbarkeit wo immer möglich (z.B. FocusVisualStyle)
  • Fehler Nr. 7 – UI-Bestandteile nicht isoliert
    Bsp:

  • – UI-Bestandteile (Controls, Styles,Templates,usw.) mit Haupt-Anwendung verzahnt
    – Technische Abhängigkeiten als Störfaktoren
    – Verunreinigung durch Design-Time Maßnahmen (z.B. Sample Data)
  • Lösung:

  • – Eigene Projekte für UI-Bestandteile
    – tiefgreifende Abhängigkeiten außen vor lassen
    – Sample Projekte mit Beispielviews zum „Spielen“
  • Fehler Nr. 8 – Keine „Blendability“
    Bsp:

  • – Komponenten in Blend nicht darstellbar/bearbeitbar (wegen Code Behind etc.)
    – überhaupt kein Blend Einsatz
  • Nette Frage: Wer arbeitet nicht mit Blend?
    Ein paar Teilnehmer melden sich.

    Antwort(geflüstert): Ihr seid zum scheitern verurteilt)

    Lösung:
    Blend als Grundvoraussetzung ansehen.