2011-10-11 97 views

回答

3

他們在一個普通的應用程序中運行。因此他們共享相同的靜態數據。因此,溝通選擇的範圍非常大。這裏有一個例子: -

public class MessageEventArgs : EventArgs 
{ 
     public MessageEventArgs(object payload) 
     { 
      Payload = payload; 
     } 

     public object Payload {get; private set; } 
} 

public class Messenger 
{ 
    private static readonly Messenger _current = new Messenger(); 
    public static Messenger Current { get { return _current; } } 

    public event EventHandler<MessageEventArgs> MessageReceived; 

    public void Send(object payload) 
    { 
      if (MessageReceived != null) 
       MessageReceived(this, new MessageEventArgs(payload)); 
    } 
} 

所有的窗口都可以附加一個處理程序Messenger.Current.MessageReceived(只是一定要脫離窗口關閉時)和任何窗口可以調用Messenger.Current.Send

好,所以你不會真的使用這個代碼它有點垃圾,重點是SL5中的Windows不是孤立的。您可以創建任何您需要的內部應用程序通信機制。

3

選項1:MVVM模式

兩個窗口共享對相同視圖模型的引用。兩者都可以看到一個人所做的更改。

選項2:正常引用

窗口A可以如何refernce到Windows B時的它創建它。

方案3:消息傳遞

你可以有你的Load事件訂閱一個全球性的事件。 (請確保您在Unload事件中取消訂閱,否則會泄漏內存!)Windows可以將消息發佈到其他窗口偵聽的事件。

相關問題