WPF, Silverlight, Windows Phone 8 und Windows-Store-App

XAML: Automatische INotifyPropertyChanged-Implementierung mit Fody
Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „XAML: Automatische INotifyPropertyChanged-Implementierung mit Fody“.

Ein unangenehmer Schritt für XAML-Entwickler ist der zusätzliche Aufwand beim Data Binding. Properties, die verändert werden, müssen die View nämlich explizit darüber informieren. Meine bevorzugte Lösung hierfür ist die aspektorientierte Programmierung (kurz AOP). Die Properties können in diesem Fall weiterhin einfache auto-Properties mit nur einem getter und setter bleiben. Das verhindert aufgeblähten Sourcecode, und man behält den Überblick.

Aspektorientierte Programmierung

Für die aspektorientierte Programmierung empfehle ich Ihnen das PostSharp-Framework. Eine Einführung dazu habe ich vor Längerem als Videotraining aufgenommen, das kostenfrei in der MSDN-Mediathek zur Verfügung steht. Das PostSharp-Framework ist für kommerzielle Projekte allerdings nicht kostenfrei. Eine attraktive Alternativlösung ist das Open-Source-Projekt PropertyChanged.Fody. Das leichtgewichtige Framework unterstützt WPF-, Silverlight- und Universal-App-Projekte. Die Installation für eigene Projekte wird über NuGet bereitgestellt. Der PropertyChanged-Aspekt kommt dabei ganz einfach mittels ImplementPropertyChanged-Attribute zum Einsatz, die direkt über die ViewModel-Klasse gesetzt werden:

 [ImplementPropertyChanged]
public class MainPageViewModel
{
  public string Title { get; set; }

  public void ChangeTitle()
  {
    Title = "Hello World";
  }
}

Beim Builden des Projekts wird nun automatisch die ausführliche IPropertyChanged-Implementierung in den IL-Code übernommen. Der ViewModel-Code bleibt somit angenehm übersichtlich, und man erspart sich zusätzlichen Aufwand.

 

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -