Kolumne: WPF und Windows-Apps

XAML-Tipp: Universal-Windows-Apps – Data Binding auf Events
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: „Universal-Windows-Apps: Data Binding auf Events“.

Das Data Binding bescherte XAML zwar einen großen Mehrwert, dennoch gibt es auch einige Schattenseiten. Beispielsweise wird das Data Binding erst zur Laufzeit per Reflection instanziiert, was zu Einbußen in Sachen Zeit und Kosten führt. Das neue Compiled-Data-Binding-Feature soll hier Abhilfe leisten. Wie der Name bereits verrät, wird das Binding beim Kompilieren fest verknüpft. Das verbessert nicht nur die Performance, sondern bietet ein typsicheres arbeiten.

Universal-Windows-Apps: Data Binding auf Events

Ab Windows 10 bietet das Compiled-Data-Binding-Feature außerdem eine lang ersehnte Funktion: Data Binding auf Events. So kann jeder Event der UserControls auf Methoden gebunden werden, mit oder ohne EventArgs. Das unbeliebte ICommand rückt somit immer mehr in den Schatten. Das Festlegen vom Binding Mode ist hierbei übrigens nicht nötig. Die nachfolgenden Listings 1 und 2 zeigen, wie ein Button-Klick eine Logik im ViewModel auslöst.

 
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
  <TextBlock Text="{x:Bind ViewModel.Message, Mode=OneWay}" FontSize="42" />
  <Button Content="OK" Click="{x:Bind ViewModel.SayHello}" />
</StackPanel>
public class MainPageViewModel : INotifyPropertyChanged
{
  private string _message { get; set; }
  public string Message
  {
    get { return _message; }
    set
    {
      _message = value;
      OnPropertyChanged();
    }
  }

  private void OnPropertyChanged([CallerMemberName] string propertyName = null)
  {
    var handler = PropertyChanged;
    if(handler != null)
    {
      handler(this, new PropertyChangedEventArgs(propertyName));
    }
  }

  public void SayHello()
  {
    Message = "Hallo Windows 10 App";
  }

  public event PropertyChangedEventHandler PropertyChanged;
}


Software Architecture Summit 2017

The Core of Domain-Driven Design

mit Carola Lilienthal (Workplace Solutions)

Distributed Systems

mit Kyle Kingsbury (Independent Consultant)

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -