none
风云的银光志Silverlight4.0教程之轻松操作剪切板 RRS feed

  • 常规讨论

  •      Silverlight 4.0开始加入了System.Windows.Clipboard(剪切板操作)类,有了它我们就可以非常方便的操作剪切板的数据了,这让一些Silverlight应用程序中的文本可以COPY到Clipboard之中,同时你可以将从其它来源COPY到剪切板中的内容粘贴到Silverlight应用程序之中,在此之前我们只能通过JavaScript来访问剪切板。

         接下来我们看一下Clipboard类为我们带来了什么,Clipboard类支持ContainsText、SetText和GetText三个方法,其中ContainsText可以返回一个bool类型的值,让我们知道剪切板目前保存的类型是否是Silverlight所支持的Unicode类型字符,SetText和GetText分别是用来设置和获GetText剪切板的文本数据。

    下面我们看一个Silverlight操作剪切板的实例:

    XAML:

       <Grid x:Name="LayoutRoot" Width="400" Height="200" Background="White">
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition Width="100"/>
            </Grid.ColumnDefinitions>
    10         <TextBox x:Name="tbCopy" Width="260" Height="30"/>
    11         <TextBox x:Name="tbPaste" Width="260" Height="30" Grid.Row="1"/>
    12         <Button Content="复制" Grid.Column="1"
    13             Click="btnCopy_Click"
    14             x:Name="btnCopy" Width="80" Height="25"/>
    15         <Button Content="粘贴" Grid.Column="1" Grid.Row="1" 
    16             Click="btnPaste_Click"
    17             x:Name="btnPaste" Width="80" Height="25"/>
    18     </Grid>

    C#:

            private void btnCopy_Click(object sender, RoutedEventArgs e)
            {
                if (tbCopy.Text != string.Empty)
                {
                    //设置剪切板
                    Clipboard.SetText(tbCopy.Text);
                }
            }

    10         private void btnPaste_Click(object sender, RoutedEventArgs e)
    11         {
    12             //判断剪切板是否包括文本字符
    13             if (Clipboard.ContainsText())
    14             {
    15                 //获取剪切板
    16                 tbPaste.Text = Clipboard.GetText();
    17             }
    18         }

    运行结果如图所示。

    image

    第一次运行SetText会让用户确认是否允许Silverlight操作剪切板,如果用户点击否会引发Clipboard access is not allowed异常。

    image

    下图完成粘贴(Paste)操作。

     

     

     

    image

          需要注意的是Silverlight与WPF不同的是,Silverlight仅仅支持Unicode字符类型的剪切板操作,还不能像WPF那像可以对不同的类型的剪切板操作,尽管如此,但是至少是Silverlight技术的一个增强,正是这种不断的进步使更多的理想在Silverlight中变为可能。

    风云的Silverlight4.0原创系列教程:http://blog.csdn.net/dotfun/category/647012.aspx


    My blog: http://blog.csdn.net/dotfun http://dotfun.cnblogs.com

    My contact: QQ:372900288 E-mail:372900288@qq.com msn:sellnet007@hotmail.com


    《银光志--Silverlight 3.0开发详解与最佳实践》
    2010年2月20日 2:39
    版主