3
A
回答
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可以將消息發佈到其他窗口偵聽的事件。
相關問題
- 1. 通過串行端口進行通信的Web應用程序
- 2. 如何設置Silverlight OOB應用程序窗口的大小?
- 3. 如何在Windows應用程序和Silverlight之間進行通信?
- 4. Python:與窗口應用程序通信
- 5. 兩個應用程序/進程如何通過COM進行通信?
- 6. 通過事件C#窗口應用程序在MDI窗體和SDI窗體之間進行通信
- 7. 通過Wifi將Android應用程序與PC應用程序進行通信
- 8. Mac到iPhone應用程序通過WiFi進行通信
- 9. 通過C#應用程序與Web進行通信?
- 10. 通過win消息在應用程序之間進行通信
- 11. Android應用程序,通過USB端口與設備進行通信
- 12. 通過點擊應用程序窗口獲取進程ID
- 13. 通過COM端口進行C++通信
- 14. Silverlight 3 oob窗口邊框
- 15. 通過msvsmon.exe進行Silverlight應用程序遠程調試
- 16. 如何使用silverlight與客戶端應用程序進行通信
- 17. 如何通過C#應用程序中的PPP連接進行通信?
- 18. 如何通過Unix套接字與Sinatra Web應用程序進行通信?
- 19. 如何通過Web服務將Android應用程序與MySQL DB進行通信?
- 20. Silverlight與桌面進程的通信
- 21. 網頁和silverlight應用程序通信
- 22. 通過RPC從Java應用程序與Windows進程通信
- 23. 如何在Silverlight 3.0應用程序中的視圖之間進行通信?
- 24. 窗口上的進程間通信
- 25. 如何通過點擊NSView通過它下面的應用程序窗口?
- 26. 從Silverlight OOB應用程序如何檢查進程是否正在運行
- 27. 通過兩個android移動應用程序進行通信信息
- 28. 如何通過ClassID找到應用程序窗口?
- 29. 通過SSH進行SSH(或如何通過SSH「通過SSH進行通信」)
- 30. 如何通過串口與NCI NFC控制器進行通信?