如果我在 oob 应用程序中有两个窗口,我该如何在它们之间进行通信?
这是允许多个窗口的 silverlight 5 的新功能。
最佳答案
它们在通用应用程序中运行。因此它们共享相同的静态数据。因此通信选择的范围非常大。这是一个例子:-
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 不是孤立的。您可以创建所需的任何内部应用程序通信机制。
关于silverlight - oob silverlight应用程序如何通过windows进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7731571/