Kolumne XAML Expertise: WPF und Windows-Apps

XAML-Tipp: ViewModel-Instanz mit Konstruktordaten in XAML erzeugen
Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger nun schon seit fünf Jahren 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: ViewModel-Instanz mit Konstruktordaten in XAML erzeugen“. Viel Spaß mit XAML Expertise.

Mit der heutigen Ausgabe feiert XAML Expertise sein fünfjähriges Jubiläum. Das sind insgesamt über 180 XAML-How-tos. Ich erinnere mich noch heute an die erste Ausgabe, damals hieß die Kolumne noch „Silverlight Expertise“. Nach der leider kurzen Laufbahn von Silverlight, wurde diese Kolumne nach drei Jahren als „XAML Expertise“ neu geboren. So gibt es eigentlich genauer genommen, die Expertise bereits seit acht Jahren. Vieles hat sich rasend schnell bewegt in der XAML-Welt. Der XAML-Compiler wurde komplett neu geschrieben, sodass ab Windows 10 zu 100 Prozent nativ kompiliert wird. Das ermöglicht ganz neue Perspektiven im XAML-Universum. Zum einen werden die Performance und die Entwicklungsunterstützung damit erheblich verbessert.

Ganz zum Nachteil vom mittlerweile über zehn Jahre alten WPF-Framework. Bei diesem lassen sich nur noch schwer Verbesserungen einbringen. Durch Xamarin wurde der XAML-Compiler auch für Mobile-Geräte neu entwickelt, was einige WPF-Experten aber nicht wirklich glücklich machte. So fehlen einige bedeutende Features, die gerade WPF so attraktiv machen. Zugegeben optimistisch betrachtet, wirft Microsoft XAML nicht einfach über Bord, und wir .NET-Entwickler können mit unserer jahrelangen Expertise auch auf modernen Wegen teilhaben. Die Zukunft von XAML liegt somit ganz klar bei Windows- und Xamarin-Apps – auch wenn Windows 10 noch nicht wirklich seinen Platz im Enterprise gefunden hat. Der Weg dorthin ist noch lang, doch XAML Expertise wird Sie gerne dabei begleiten und weiterhin unterstützen.

XAML: ViewModel-Instanz mit Konstruktordaten in XAML erzeugen

In der letzten XAML-Expertise-Folge wurde gezeigt, dass die Code-Behind-Datei komplett gelöscht werden kann und dass eine XAML-Datei diese zum Ausführen gar nicht benötigt. Diesen Tipp zeigte ich ebenfalls auf der BASTA!-Spring-2017-Konferenz in meinem Vortrag zu XAML Expertise. Die erste Frage der Teilnehmer lautete: Wie kann man dann eine ViewModel-Instanz im XAML erzeugen, die Daten in ihrem Konstruktor benötigt?

Die Lösung dazu lautet ObjectDataProvider. Dieser erzeugt ein beliebiges Objekt mit Data-Binding-Support. Dazu lassen sich sogar Methoden ausführen oder eben auch abhängige Daten in den Konstruktor laden, und das direkt von XAML aus.

In Listing 1 wird gezeigt, wie eine ObjectDataProvider-Instanz innerhalb von Resources erzeugt wird. Über das ObjectType-Attribut wird auf das gewünschte ViewModel verwiesen. Der Konstruktor vom ViewModel erwartet eine Instanz vom MyDataService. So muss dieser explizit vor dem ObjectDataProvider im Resources-Bereich instanziiert werden. Anschließend wird im ObjectDataProvider über das CustructorParameters-Property die Referenz darauf gesetzt. So einfach kann eine ViewModel-Instanz mit Konstruktordaten innerhalb vom XAML erzeugt werden.

<Window.Resources>
  <viewModels:MyDataService x:Key="MyDataService" />
  <ObjectDataProvider x:Key="ViewModel" ObjectType="viewModels:MainWindowViewModel">
    <ObjectDataProvider.ConstructorParameters>
      <StaticResource ResourceKey="MyDataService" />
    </ObjectDataProvider.ConstructorParameters>
  </ObjectDataProvider>
</Window.Resources>
<Grid DataContext="{StaticResource ViewModel}">
  ...

Windows Developer

Windows DeveloperDieser Artikel ist im Windows Developer erschienen. Windows Developer informiert umfassend und herstellerneutral über neue Trends und Möglichkeiten der Software- und Systementwicklung rund um Microsoft-Technologien.

Natürlich können Sie den Windows Developer über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist der Windows Developer ferner im Abonnement oder als Einzelheft erhältlich.


Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -