Kolumne: WPF und Windows-Apps

XAML-Tipp: Universal-Windows-Apps – Data Binding auf Events
Keine 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;
}


ML Conference 2021

Efficient Transformers

Christoph Henkelmann, DIVISIO

Enhancing Page Visits by Topic Prediction

Dieter Jordens, Continuum Consulting NV

Machine Learning on Edge using TensorFlow

Håkan Silfvernagel, Miles AS

 

Microservices Summit

Micro Frontends – Probleme, Techniken, Lösungen

mit Lars Kölpin-Fresse (Open Knowledge GmbH)

Mono-, Modu-, Microliths – oder welche Steine nutze ich zum Bauen

mit Dr. Annegret Juncker (Allianz Deutschland AG)

Unsere Redaktion empfiehlt:

Relevante Beiträge

Abonnieren
Benachrichtige mich bei
guest
0 Comments
Inline Feedbacks
View all comments
X
- Gib Deinen Standort ein -
- or -