2012-12-18 13 views
5

एमवीएमएमलाइट में, मैंने पाया कि मैसेंजर के पास। डिफॉल्ट जो पूरे प्रकार के संदेश हैंडल को स्टोर करने के लिए वैश्विक स्थिर चर का एक प्रकार है, प्रत्येक व्यूमोडेल में मैसेंजर इंस्टेंस नामक एक और मैसेंजर हैंडलर होगा। तो, मैं इस बारे में उलझन में हूं कि & के लिए मैसेंजर इंस्टेंस का उपयोग कैसे किया जाता है? (केवल ViewModel इसे देख सकते हैं -> जो & प्रक्रिया संदेश प्राप्त होगा?)मैसेंजर इंस्टेंस बनाम मैसेन्जर। एमवीएमएलटाइट में डीफॉल्ट

उत्तर

3

MessengerInstance RaisePropertyChanged द्वारा किया जाता है() विधि:

<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); 

आप एक ऐसा दृश्य पर एक संपत्ति पर उपयोग कर सकते हैं उदाहरण के लिए मॉडल बी:

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); 
     } 
    } 

पकड़ने यह और के साथ एक दृश्य मॉडल एक पर इसके साथ सौदा:

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; 
     }); 

उम्मीद है कि यह मदद करेगा :)

+0

धन्यवाद! अभी स्पष्ट करें!^_ ^ – kidgu

संबंधित मुद्दे