日期:2014-05-17  浏览次数:20838 次

新时尚Windows8开发(10):如何共享文本内容

老周的博客http://blog.csdn.net/tcjiaan,转载请注明原作者和出处。

 

首先请各位看下面的图。

 

 

相信微博的这个功能,大家不陌生吧。那么它是怎么实现的呢?

首先,我们要了解一个东西,应用程序协定,名称不好理解,也很难翻译,这样吧,我们看看它是在哪里设置的,也许你会有点感悟。

用VS2012新建windows store应用后,你会看到项目中有个清单文件,用于配置与应用程序包相关的信息。

双击打开它。

切换到“声明”选项卡。

 

这就是应用程序协定,你可以理解为为你的应用程序声明多种启动方式,并作为特定的目标使用,如上面图片中,新浪微博为什么可以在其它应用程序中启动,并且可以共享信息,这样,我们可以理解为应用程序之间数据的传递,而我们最常见的一种方式就是复制-粘贴,这是利用剪贴板作为载体实现应用程序之间 的数居共享。

 

如果还是觉得很抽象,那最好的办法就是用实例来说明,我们来模拟刚才新浪微博的功能,一个解决方案我们需要建两个项目,一个是共享源,即发送共享数据的一方;另一个是共享目标,即接受共享数据的一方。

 

首先我们来实现共享源,即发送方。

1、启动VS,新建项目。

2、在MainPage.xaml中输入以下XAML代码。

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <StackPanel>
            <TextBox Name="txtContent" Height="285"/>
            <Button Margin="12,15,0,0" Content="共享" Click="onShare"/>
        </StackPanel>
    </Grid>


 

3、然后,我们要处理按钮的Click事件。

        private void onShare(object sender, RoutedEventArgs e)
        {
            DataTransferManager.ShowShareUI();
        }

ShowShareUI方法是静态的,可以直接调用,DataTransferManager位于命名空间Windows.ApplicationModel.DataTransfer,发送共享数据正是通过它来完成。

那,什么时候设置我们要发送的数据呢?例如,现在我要共享目标共享一条文本信息,设置数据是在DataTransferManager类的DataRequested事件中处理的。


 通过GetForCurrentView方法获得DataTransferManager的实例,故在MainPage类的构造函数加入以下代码。

        public MainPage()
        {
            this.InitializeComponent();
            DataTransferManager.GetForCurrentView().DataRequested += MainPage_DataRequested;
        }


4、处理DataRequested事件。

        void MainPage_DataRequested(DataTransferManager sender, DataRequestedEventArgs args)
        {
            var defl = args.Request.GetDeferral();
            // 设置数据包
            DataPackage dp = new DataPackage();
            dp.Properties.Title = "共享文本";
            dp.Properties.Description = "分享一些字符串。";
            dp.SetText(txtContent.Text);
            args.Request.Data = dp;
            // 报告操作完成
            defl.Complete();
        }


 

OK,现在我要完成共享目标。

在解决方案资源管理器”解决方案节点上右击,在弹出菜单中依次选择“添加”->“新建项目”,再建一个App,它就是数据的接收方。

1、打开清单文件,切换到“声明”选项卡,在下拉列表中选择“共享目标”,并单击“添加”按钮。

在右面的面板中,找到“数据格式”节,单击“新增”按钮。

因为只需传递文本信息,因此,输入 Text 即可。

保存,关闭清单文件。

 

2、新建一个空白页,命名为SharedPage.xaml,XAML代码如下。

    <Grid Background="#FF0B4C81">
        <TextBlock Margin="10,15,0,0"
                   FontSize="28"
                   VerticalAlignment="Top"
                   HorizontalAlignment="Left"
                   x:Name="tbShareText"/>
    </Grid>

3、打开SharedPage.xaml.cs

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Window