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

在去年我曾经写过一篇文章,介绍如何在同一页面下多个Silverlight应用间传递事件信息,

当时所使用的技巧就是借助HTML页面元素来传递,当然这种方式也支持向其它第三方ActiveX控件传递信息。但因为引入了JS代码,让开发者感觉有些别扭。必定这种消息传递写在 CS代码中会更容易被接受。

好在Silverlight3 beta中提供了两个重要的类,它们都是以“LocalMessage”打头,其位于“System.Windows.Messaging”名空间下:

LocalMessageSender :消息发送器类
LocalMessageReceiver:消息接收器类

顾名思义,它们就是所谓消息的“发送方”和“接收方”。

而使用它们也很简单,首先我们要先创建一个Silverlight3 Beta项目,名为:LocalMessage。

然后将下面的XAML代码复制到MainPage.xaml文件中:

<UserControl x:Class="LocalMessage.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="400" Height="200">
    <StackPanel x:Name="LayoutRoot" Background="AliceBlue">
        <TextBox
            Margin="10"
            FontSize="24"
            x:Name="txtMessage" />
        <Button
            Content=" 发 送 "
            HorizontalAlignment="Right"
            Margin="10"
            Click="OnSendMessage" />
        <TextBlock TextWrapping="Wrap"
            Foreground="Blue"
            FontSize="12"
            x:Name="txtResponse"
            HorizontalAlignment="Center" />
    </StackPanel>
</UserControl>

下面是相应的CS代码:

void OnSendMessage(object sender, RoutedEventArgs args)
{
    LocalMessageSender msgSender = new LocalMessageSender("MessageContact", "localhost");

    EventHandler<SendCompletedEventArgs> handler = null;

    handler = (s, e) =>
      {
          Dispatcher.BeginInvoke(() =>
          {
              msgSender.SendCompleted -= handler;

              if (e.Error != null)
              {
                  txtResponse.Text = String.Format("错误 [{0}]", e.Error.Message);
              }
              else
              {
                  txtResponse.Text = String.Format("响应 [{0}]", e.Response == null ? "None" : e.Response);
              }
          });
      };
    msgSender.SendCompleted += handler;

    msgSender.SendAsync(txtMessage.Text);
}

时间: 2024-11-05 04:59:09

快速浏览Silverlight3 Beta:在多个Silverlight应用间传递信息的相关文章

快速浏览Silverlight3 beta:鸡肋一样的WritableBitmap

之前在网上有讨论 使用Silverlight3 beta的WritableBitmap进行截图 的问题.但结果也是很不明确,起码就目前看来,使用WritableBitmap的Render方法对XAML文件中UI元素生成位图,但还不支持将获取出来的位图以文件流的文件保存到本地(因为我开始想用SaveFileDialog来做这事).原因就是在调用Render方法之后,就不可以再访问WritableBitmap中的Pixel(数组类型)了,系统会报错,如下图: 目前看来只能像那个老外所说的那样,把希望

快速浏览silverlight3 Beta:打包下载文件(共享程序集)

翻译:http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/03/18/a-quick-look-at-silverlight-3-packaging-assemblies-for-download.aspx 在Silverlight2中,如果使用附属(additional)程序集(比如System.Xml.Linq.dll)时,需要在VS中添加对它的引用.最终在生成的XAP文件中包括下面内容: 这样,每当

快速浏览Silverlight3 Beta:使用SaveFileDialog保存到本地文件

在Silverlight3 Beta,提供了保存文件对话框,通过它我们可以很方便的将文本(包括图片等)信息 保存到指定的本地文件上,当然这是要求一定权限的,所以在启用VS2008时请选择以"管理员身份"运行, 即: 只有这样才不会在稍会的保存文件时,出现权限不足而无法保存的问题. 首先,我们的XAML文件内容如下: <Grid x:Name="LayoutRoot" Background="AliceBlue"> <Grid.R

快速浏览Silverlight3 Beta:当HLSL遇上Silverlight

HLSL高级着色器语言(High Level Shader Language,简称HLSL),由微软拥有及开发的一种语言,只能供微软的Direct3D使用. HLSL是微软抗衡GLSL的产品,同 时不能与OpenGL标准兼容.他跟Nvidia的Cg非常相似. 看了上面的几行话,可能大家还不是很清楚这个东西与当前的Silverlight的关系.其实在园子里的兄弟发过这篇文章,介绍"silverlight3滤镜效果". 而其在源码中所使用的.ps文件(注:这里不是powershell呀),

快速浏览Silverlight3 Beta:在线与离线状态检测

在Silverlight3中提供了NetworkChange,NetworkInterface这两个类(均为abstract型), 其中实现了NetworkAddressChanged的事件处理器用来检测当前在线状态,而NetworkInterface 类的 GetIsNetworkAvailable()方法(返回bool类型),用来判断当前是否在线.有了这两个类, 就可以很方便的实现动态检测当前应用是否连线了. 下面就是我写的一个DEMO,用于演示如何使用这两个方法,其中的XAML代码如下:

快速浏览Silverlight3 Beta:数据检验

在Silverlight3中对数据进行校验不再像Silverlight2中那样麻烦了,下面就简要演示一下. 首先,我们创建一个Silverlight3应用,名为:"ValidateSample" 然后将下面的xaml代码复制到"MainPage.xaml"中: <Grid x:Name="LayoutRoot" Background="AliceBlue"> <Grid.RowDefinitions>

快速浏览Silverlight3 Beta: SystemColor(系统颜色)

原文链接:http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/04/29/silverlight-3-system-colours.aspx Silverlight 3 中加入了一个名为"SystemColors"类,其包括如下属性; 如果我创建一个Silverlight 应用,并在其中放入一个button(按钮)的话: <Button Content="Click Me&quo

快速浏览Silverlight3:在浏览器外运行Silverlight应用

翻译:http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/03/18/a-quick-look-at-silverlight-3-running-outside-the-browser.aspx Silverlight3一个很显著的特点就是其应用可以在浏览器外运行.就是说一个在浏览器中运行的应用可以被独立(detached)出来,并通过一个桌面和开始菜单栏图标来启动执行,而不在需要有网络连接.这样给人的感

办公软件技巧快速浏览长word文档

编辑长文档时,由于文档内容非常庞大,如果能在文档中建立一些直接返回目录的链接,对于文档的浏览与查看将是非常方便的电脑应用技巧.在Word2003中使用交叉引用可以帮助用户快速浏览Word长文档. 第1步,首先要确定插入点.在合适的位置输入"(返回)"字样,并将光标置于"返回"的后面.然后依次单击"插入"→"引用"→"交叉引用"菜单命令. 第2步,接着选择引用内容.在打开的"交叉应用"对话