2012-01-12 59 views
0

我有實施類似Mediator模式的一個項目是什麼在這個問題上找到: Sql, Wpf, Xaml, C#, Binding data, Dynamic resource, accessing to non-static data, Obtaining a Reference to an Object一個Mediator MVVM

這似乎很好地工作時,註冊()函數在父視圖稱爲然後子視圖中的SendMessage()函數。可以很容易地獲得在兒童中獲得的數據,然後父母可以通過調解員處理數據。

但是我需要做相反的事情。獲取家長獲得的數據並將其傳遞給孩子進行處理。調解員可以用於這項任務嗎?

我已經嘗試過使用SendMessage()函數在父類中調用Register()函數的各種方法,但由於Register()初始化集合,記錄似乎正在丟失。

我錯過了什麼嗎?有沒有更好的辦法?

+2

發佈一些代碼。 – cadrell0 2012-01-12 21:34:49

+0

除了SelectList.xaml代碼隱藏和Temp.xaml代碼隱藏之外,它的鏈接本質上是什麼。 – 2012-01-12 21:45:55

回答

0

我有同樣的問題...我知道它不是一個很好的解決方案,但我解決它像這樣....

在你ChildView

public ChildViewModel() 
    { 
     Messenger.UnRegister(this); //I use reflection and Attributes to register/Unregister you can do it normally 
     Messenger.Register(this); 
     if (ChildData== null) 
     { 
      Messenger.NotifyColleagues<object>(
       MessengerMessages.GET_CHILD_DATA,ChildData); 
     }    
    } 
    [MessengerMessageSink(MessengerMessages.SEND_CHID_DATA, 
     ParameterType = typeof (CHILD_DATA))] 
    protected void Set_Child_DATA(ChildData childData) 
    { 
     if (childData!= null) 
     { 
      //Do Something    
     } 
    } 

在你ParentView

public ParentViewModel() 
    { 
     Messenger.UnRegister(this); //I use reflection and Attributes to register/Unregister you can do it normally 
     Messenger.Register(this);    
    } 
    [MessengerMessageSink(MessengerMessages.GET_CHILD_DATA, 
     ParameterType = typeof (CHILD_DATA))] 
    protected void Send_Child_DATA(Object obj) 
    { 
         Messenger.NotifyColleagues<object>(
       MessengerMessages.SEND_CHILD_DATA,ChildData); 
    } 

這裏我們調用parentViewModel來發送所需的數據,當ChildViewModel dosent找到它所需要的數據時....

+0

這次電話會發生什麼? [MessengerMessageSink(MessengerMessages.GET_CHILD_DATA, ParameterType = typeof(CHILD_DATA))] – 2012-01-20 21:18:47

+0

@DJ。我使用反射來註冊消息....上面的行賦予函數的屬性,以便它的寄存器函數用於調用消息「MessengerMessages.GET_CHILD_DATA」 – Ankesh 2012-01-23 04:22:10