Kolumne XAML Expertise: WPF und Windows-Apps

XAML-Tipp: MVVM so ganz ohne Code-behind-Datei
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: MVVM so ganz ohne Code-behind-Datei“.

Der direkte Zugriff über die Code-behind-Datei ist für einige Entwickler oft noch verlockend. Gerade bei einem größeren Team kann das erhebliche Folgen haben: Information Hiding! Zur Absicherung gibt es eine harte, aber sinnvolle Lösung. Die Code-Behind-Datei einfach aus dem Solution Explorer löschen. Wichtig dabei ist nur, dass in der XAML-Datei der XAML-Namespace-Eintrag x:Class ebenfalls entfernt wird. Sie können nun getrost das Projekt builden und ausführen, die Code-behind-Datei ist gar nicht notwendig.

Für eine Vermittlung von Events zum ViewModel gibt es eine attraktive Lösung mittels Behaviors. Diese wurden bereits in der Kolumne vorgestellt. Das Instanziieren vom ViewModel erfolgt über den Resources-Bereich. In Listing 1 wird gezeigt, wie ein Behavior an einem Loaded-Event lauscht und eine Methode vom ViewModel aufruft. Dieses wurde ebenfalls im Resources-Bereich angelegt. Sie sehen auch hier: Es ist keine Code-Behind-Datei notwendig.

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
  xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  xmlns:local="clr-namespace:ViewOhneCodeBehind"
  Title="MainWindow"
  Width="525"
  Height="350"
  mc:Ignorable="d">
  <Window.Resources>
    <local:MainViewModel x:Key="ViewModel" />
  </Window.Resources>
  <Grid DataContext="{StaticResource ViewModel}">
    <i:Interaction.Triggers>
      <i:EventTrigger EventName="Loaded">
        <ei:CallMethodAction MethodName="ViewLoaded" TargetObject="{Binding Mode=OneWay}" />
      </i:EventTrigger>
    </i:Interaction.Triggers>
  </Grid>
</Window>


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 -