2016-04-09 6 views
0

Je souhaite que mes zones de texte ne soient mises à jour que lorsque le bouton de mise à jour est cliqué au lieu de changer de propriété. Je les ai mis à UpdateSourceTrigger = Explicite, maintenant j'ai juste besoin du bouton pour appeler BindingExpression.UpdateSource.C# Appel de BindingExpression.UpdateSource dans 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}"/> 

Y at-il un moyen facile d'appeler BindingExpression.Updatesource sans code-behind? La principale raison pour laquelle je cherche une solution non-code-behind est que j'apprends à l'école pour éviter le code-behind à peu près tous les coûts.

+0

Il y a un malentendu commun MVVM que vous ne devriez pas utiliser le code-behind du tout. Je pense que c'est une bonne pratique d'utiliser le code-behind pour la fonctionnalité qui est spécifique à la vue et garder le modèle de vue pour la logique de l'application. Votre ViewModel devrait facilement s'adapter derrière une autre vue qui représente la même donnée/logique sans bits impairs de code qui ne s'appliquent pas à cette vue. –

Répondre

0

il y a des façons de résoudre votre problème en utilisant modèle MVVM, dans mon expérience, la meilleure approche lorsque vous souhaitez interagir avec les contrôles indirectement avec le code derrière dans la vue (par exemple MainPage.cs), vous devez utiliser Behaviors vous pouvez attacher au contrôle et tous les événements de ce contrôle, créer des propriétés de dépendance etc et vous pouvez réutiliser ce comportement avec d'autres contrôles.

Voici un exemple pour Windows 8.1 mais il peut l'utiliser pour des applications UWP

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