oob silverlight应用程序如何通过Windows进行通信

时间:2011-10-11 19:41:10

标签: silverlight silverlight-5.0

如果我在oob应用程序中有两个窗口,我该如何在它们之间进行通信?

这是silverlight 5的新功能,允许多个窗口。

2 个答案:

答案 0 :(得分:3)

选项1:MVVM模式

两个窗口共享对同一视图模型的引用。两者都可以看到一个人做出的改变。

选项2:正常参考

窗口A可以在创建Windows B时引用它。

选项3:消息传递

您可以在Load事件中拥有您订阅的全局事件。 (确保您在Unload事件中取消订阅,否则您将泄漏内存!)Windows可以将消息发布到其他窗口侦听的事件。

答案 1 :(得分: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不是孤立的。您可以创建所需的任何内部应用程序通信机制。