2012-12-18 11 views
5

W MvvmLight znalazłem, że obok Messenger.Default, który jest rodzajem globalnej zmiennej statycznej do przechowywania obsługi wiadomości z całej aplikacji, każdy Viewmodel będzie miał inny program obsługi komunikatów o nazwie MessengerInstance. Jestem więc zdezorientowany tym, co MessengerInstance użyto dla &, jak z niego korzystać? (Tylko ViewModel można go zobaczyć -> Kto otrzyma & wiadomość proces?)MessengerInstance vs Messenger.Default w Mvvmlight

Odpowiedz

3

MessengerInstance jest używany przez RaisePropertyChanged() metoda:

<summary> 
/// Raises the PropertyChanged event if needed, and broadcasts a 
///    PropertyChangedMessage using the Messenger instance (or the 
///    static default instance if no Messenger instance is available). 
/// 
/// </summary> 
/// <typeparam name="T">The type of the property that 
///    changed.</typeparam> 
/// <param name="propertyName">The name of the property 
///    that changed.</param> 
/// <param name="oldValue">The property's value before the change 
///    occurred.</param> 
/// <param name="newValue">The property's value after the change 
///    occurred.</param> 
/// <param name="broadcast">If true, a PropertyChangedMessage will 
///    be broadcasted. If false, only the event will be raised.</param> 
protected virtual void RaisePropertyChanged<T>(string propertyName, T oldValue, T  
               newValue, bool broadcast); 

Można go używać na nieruchomości na widoku Model B na przykład:

public const string SelectedCommuneName = "SelectedCommune"; 

    private communes selectedCommune; 

    public communes SelectedCommune 
    { 
     get { return selectedCommune; } 

     set 
     { 
      if (selectedCommune == value) 
       return; 

      var oldValue = selectedCommune; 
      selectedCommune = value; 

      RaisePropertyChanged(SelectedCommuneName, oldValue, value, true); 
     } 
    } 

go złapać i radzić sobie z nim na widoku modelu a z:

Messenger.Default.Register<PropertyChangedMessage<communes>>(this, (nouvelleCommune) => 
     { 
      //Actions to perform 
      Client.Ville = nouvelleCommune.NewValue.libelle; 
      Client.CodePays = nouvelleCommune.NewValue.code_pays; 
      Client.CodePostal = nouvelleCommune.NewValue.code_postal; 
     }); 

Mam nadzieję, że to pomoże :)

+0

Dzięki! Wyczyść teraz!^_ ^ – kidgu

Powiązane problemy