WEB开发网
开发学院图形图像Flash 快速浏览Silverlight3 Beta: 在多个Silverlight应... 阅读

快速浏览Silverlight3 Beta: 在多个Silverlight应用间传递信息

 2009-03-31 12:02:06 来源:WEB开发网   
核心提示: ReceiverDomain:获取LocalMessageReceiver的域信息(只有指定的域才能获取消息),这主要是解决跨域和安全性问题 这里ReceiverDomain还可使用System.Windows.Messaging.LocalMessageSender.Global,

ReceiverDomain:获取LocalMessageReceiver的域信息(只有指定的域才能获取消息),这主要是解决跨域和安全性问题

这里ReceiverDomain还可使用System.Windows.Messaging.LocalMessageSender.Global,这样就设置为Global域了。

在绑定相应的方法(SendCompleted)之后就可发送异步消息了。

接下来介绍一下接收方代码。

首先要先创建一个接收方的Silverlight应用,这里命名为“LocalMessageReceiver”。下面是相应的XAML代码:

<UserControl x:Class="LocalMessageReceiver.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="400" Height="200">
    <Grid x:Name="LayoutRoot" Background="Blue" >
        <TextBlock
            Foreground="White"
            FontSize="12"
            x:Name="txtMessage"
            HorizontalAlignment="Center"
            VerticalAlignment="Center"/>
    </Grid>
</UserControl>

而CS代码如下所示:

void OnLoaded(object sender, RoutedEventArgs args)
{
    List<string> allowedSenderDomains = new List<string>();
    allowedSenderDomains.Add( "silverlightshow.net" );
    allowedSenderDomains.Add( "http://www.silverlightshow.net/" );
    allowedSenderDomains.Add("localhost");
   
    //下面使用全命名主要是项目名称与已有的LocalMessageReceiver重名所致
    System.Windows.Messaging.LocalMessageReceiver receiver =
        new System.Windows.Messaging.LocalMessageReceiver("MessageContact", ReceiverNameScope.Domain, allowedSenderDomains);

    receiver.MessageReceived += (s, e) =>
      {
          e.Response = "接收方收到消息!";

          Dispatcher.BeginInvoke(() =>
            {
                txtMessage.Text = String.Format("收到信息 [{0}]", e.Message);
            });
      };

    receiver.Listen();
}   

我们看到这里LocalMessageReceiver类实例实始化参数,其中:    

ReceiverName:参见上面的LocalMessageSender

NameScope: ReceiverNameScope.Domain, 该枚举参数用于标识是Domain还是Global。

AllowedSenderDomains: 允许发送的域信息。

因为之前发送方已指定了域信息,即“localhost”,所以这里在列表变量:allowedSenderDomains中添加了“localhost”,并标识以 ReceiverNameScope.Domain。

下面我们看一下效果:

快速浏览Silverlight3 Beta: 在多个Silverlight应用间传递信息    

当然如果发送方没有采用与接收方相同的ReceiverName或者发送方的ReceiverDomain未出现在接收方的AllowedSenderDomains列表中,就会出现错误。这一点大家下载源码后运行一下就可以了。

另外就是如果发送方设置的是LocalMessageSender.Global,那么在接收方必须相应是:   

ReceiverNameScope.Global

原文链接:http://www.cnblogs.com/daizhj/

上一页  1 2 3 

Tags:快速 浏览 Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接