Universal-Windows-Apps: Data Binding auf Events
Ab Windows 10 gibt es nun endlich ein lang ersehntes Feature: Data Binding auf Events. So kann jedes Event mittels Compiled Data Binding an Methoden des ViewModels gebunden werden – mit oder ohne EventArgs. Das ist ein großer Feind für Behaviors, und das unbeliebte ICommand rückt immer mehr in den Schatten. Der ungewohnte Aspekt hierbei ist, dass ein Compiled Data Binding nur auf die Code-Behind der aktuellen View beschränkt ist. Beim Einsatz vom MVVM-Pattern muss bei der Code-Behind ein ViewModel-Property angelegt werden. Beim Binden von Events ist das Festlegen vom Binding-Mode nicht notwendig. Listing 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; }
Modul ADOC – Architekturdokumentation – Softwarearchitekturen festhalten und kommunizieren
mit Stefan Zörner (embarc)
Modul FLEX – Flexible Architekturen: Microservices, Self-contained Systems und Continuous Delivery
mit Eberhard Wolff oder Niko Will (INNOQ)