2016-04-09 8 views
0

Ich möchte meine Textfelder nur aktualisieren, wenn auf die Schaltfläche Update geklickt wird, anstatt wenn Eigenschaft geändert wird. Ich habe sie auf UpdateSourceTrigger = Explicit gesetzt, also brauche ich jetzt nur die Schaltfläche, um BindingExpression.UpdateSource aufzurufen.C# Aufruf von BindingExpression.UpdateSource in UWP MVVM

<TextBox x:Name="textBox_No" HorizontalAlignment="Left" Margin="650,145,0,0" TextWrapping="Wrap" Text="{Binding SelectedItem.Hotel_No, Mode=TwoWay, UpdateSourceTrigger=Explicit}" VerticalAlignment="Top"/> 
    <TextBox x:Name="textBox_Name" HorizontalAlignment="Left" Margin="650,218,0,0" TextWrapping="Wrap" Text="{Binding SelectedItem.Name, Mode=TwoWay, UpdateSourceTrigger=Explicit}" VerticalAlignment="Top"/> 
    <TextBox x:Name="textBox_Address" HorizontalAlignment="Left" Margin="650,305,0,0" TextWrapping="Wrap" Text="{Binding SelectedItem.Address, Mode=TwoWay, UpdateSourceTrigger=Explicit}" VerticalAlignment="Top"/> 
    <Button x:Name="button" Content="Update" HorizontalAlignment="Left" Margin="655,388,0,0" VerticalAlignment="Top" Command="{Binding HotelHandler.UpdateCommand, Mode=TwoWay}"/> 

Gibt es eine einfache Möglichkeit, BindingExpression.Updatesource ohne Code-Behind aufzurufen? Der Hauptgrund, warum ich nach einer Non-Code-Behind-Lösung suche, ist, dass ich in der Schule lerne, um Code-Behind zu fast allen Kosten zu vermeiden.

+0

Es ist ein weit verbreitetes Missverständnis in MVVM, dass Sie nicht den Code-behind überhaupt verwenden sollten. Ich denke, es ist eine gute Methode, den Code-Behind für eine View-spezifische Funktionalität zu verwenden und das View-Modell für die Anwendungslogik zu behalten. Ihr ViewModel sollte leicht hinter eine andere Ansicht passen, die die gleiche Daten/Logik ohne ungerade Bits Off-Code darstellt, die nicht für diese Ansicht gelten. –

Antwort

0

gibt es einige Möglichkeiten, um Ihr Problem mit MVVM Muster zu lösen, in meiner Erfahrung der beste Ansatz, wenn Sie mit den Kontrollen mit Code indirekt interagieren wollen hinter in der Ansicht (zB MainPage.cs) Sie Behaviors verwenden müssen können Sie an das Steuerelement und alle Ereignisse dieses Steuerelements anhängen, Abhängigkeitseigenschaften usw. erstellen und dieses Verhalten mit anderen Steuerelementen erneut verwenden. Hier

ist ein Beispiel für Windows 8.1, aber es kann es für UWP-Apps nutzen

http://julmar.com/blog/programming/behaviors-in-windows-8-1-store-apps/