2010-07-08 8 views

Répondre

0

Vous n'avez pas besoin d'utiliser TextChanged_event ou SelectionchangedEvent car vous pouvez les obtenir en les associant à vos propriétés ViewModel et en attendant leur message de notification (vérifiez la classe d'assistance Messenger de MVVMLight).

Si vous avez besoin désespérément besoin d'un gestionnaire pour ces événements, vous pouvez essayer la classe d'aide comportementale EventToCommand qui utilise RelayCommand

Vous pouvez consulter cette illustration et example program pour plus de détails sur la classe de messager et this example pour obtenir une image claire sur Comportement EventToCommand

0

Ce que vous faites est de surveiller la modification de la méthode de jeu de propriétés de votre ViewModel.

Le XAML ressemblerait à quelque chose comme ceci:

 <TextBox Text="{Binding Mode=TwoWay, 
           Path=ViewModelProperty, 
           UpdateSourceTrigger=PropertyChanged}" /> 

Et la classe ViewModel, vous définissez une propriété comme ceci:

Private _ViewModelProperty As String 
    Public Property ViewModelProperty As String 
     Get 
      Return _ViewModelProperty 

     End Get 
     Set(ByVal value As String) 
      ' your test for "TextChanged" goes here 
      If value <> _ViewModelProperty Then 
       _ViewModelProperty = value 
       OnViewModelPropertyChanged() 
      End If 
     End Set 
    End Property 
    Private Sub OnViewModelPropertyChanged() 
     ' logic for handling changes goes here 
    End Sub 

Cela a pour effet secondaire d'exécuter OnViewModelPropertyChanged() chaque fois que vous Affectez une nouvelle valeur au ViewModelProperty, mais vous pouvez l'éviter en affectant le champ de sauvegarde à la place de la propriété. Dans le cas contraire, vous implémentez des interfaces ICommand, qui ont leur utilisation; Cela dépend de la complexité de vos besoins.

+0

qu'en est-il du ComboBox SelectionchangedEvent ... si je veux les éléments supprimés et les éléments ajoutés? –

+0

Pour cela, vous devez entrer dans l'implémentation de ICommand, si vous voulez que votre pattern MVVM reste "pur". Si vous n'avez pas besoin de cela, c'est-à-dire si aucun concepteur d'interface utilisateur n'insiste sur l'absence de code-behind dans le code XAML, implémentez un gestionnaire d'événements SelectionChanged directement dans votre code-behind. Les méthodes de ViewModel. –