博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Silverlight4.0教程之轻松操作剪切板
阅读量:7057 次
发布时间:2019-06-28

本文共 2461 字,大约阅读时间需要 8 分钟。

微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最突出的主要体现在几个方面:

开发工具增强:Visual Studio 2010具有可视化的设计工具,创建项目时可以选择运行时版本是3.0还是4.0,BLEND4加入XAML和C#代码全方位智能感知功能、XAML的样式应用更为易用等。

摄像头与MIC硬件支持:可以用极少量的代码实现启用用户本机的WebCam和Mic,并可进行本地录制。

报表打印支持:报表打印问题在Silverlight4中得到的较好的解决。

更强大的基础类控件(RichTextBox、DataGrid增强版):富文本控件RichTextBox和具有可粘贴、排序功能的DataGrid被加入。

WCF增强:终于支持TCP通讯,比较HTTP提升3-5倍,限于4502-4534端口。

兼容性增强:对Google的Chrome浏览器的支持。

MEF支持:MEF全称为Managed Extensibility Framework,译为“托管扩展框架”,支持创建大型复杂的应用程序。

运行速度提升:启动速度和渲染速度较前个版本提升约2倍左右。

DRM增强:支持PlayReady,可以对视频和音频的播放进行的保护,补充了对H.264的DRM保护。

其它增强:本地文件读写、鼠标右键事件支持、剪粘板支持。

      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:

1  
 
 
 
<
Grid
 x:Name
=
"
LayoutRoot
"
 Width
=
"
400
"
 Height
=
"
200
"
 Background
=
"
White
"
> 

2  
 
 
 
 
 
 
 
 
<
Grid.RowDefinitions
> 

3  
 
 
 
 
 
 
 
 
 
 
 
 
<
RowDefinition/
> 

4  
 
 
 
 
 
 
 
 
 
 
 
 
<
RowDefinition/
> 

5  
 
 
 
 
 
 
 
 
<
/Grid.RowDefinitions
> 

6  
 
 
 
 
 
 
 
 
<
Grid.ColumnDefinitions
> 

7  
 
 
 
 
 
 
 
 
 
 
 
 
<
ColumnDefinition
 
/
> 

8  
 
 
 
 
 
 
 
 
 
 
 
 
<
ColumnDefinition
 Width
=
"
100
"
/
> 

9  
 
 
 
 
 
 
 
 
<
/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#:

1  
 
 
 
 
 
 
 
 
private
 
void
 
btnCopy_Click
(
object
 
sender,
 
RoutedEventArgs
 
e
) 

2  
 
 
 
 
 
 
 
 
{
 

3  
 
 
 
 
 
 
 
 
 
 
 
 
if
 
(
tbCopy
.
Text
 
!
=
 
string
.
Empty
) 

4  
 
 
 
 
 
 
 
 
 
 
 
 
{
 

5  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
//
设置剪切板 

6  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Clipboard
.
SetText
(
tbCopy
.
Text
)
; 

7  
 
 
 
 
 
 
 
 
 
 
 
 
} 

8  
 
 
 
 
 
 
 
 
} 

9  

10 
 
 
 
 
 
 
 
 
private
 
void
 
btnPaste_Click
(
object
 
sender,
 
RoutedEventArgs
 
e
) 

11 
 
 
 
 
 
 
 
 
{
 

12 
 
 
 
 
 
 
 
 
 
 
 
 
//
判断剪切板是否包括文本字符 

13 
 
 
 
 
 
 
 
 
 
 
 
 
if
 
(
Clipboard
.
ContainsText
(
)
) 

14 
 
 
 
 
 
 
 
 
 
 
 
 
{
 

15 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
//
获取剪切板 

16 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
tbPaste
.
Text
 
=
 
Clipboard
.
GetText
(
)
; 

17 
 
 
 
 
 
 
 
 
 
 
 
 
} 

18 
 
 
 
 
 
 
 
 
} 

运行结果如图所示。

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

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

 

 

 

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

转载地址:http://zbgol.baihongyu.com/

你可能感兴趣的文章
[转载] Redis
查看>>
[LeetCode]:237:Delete Node in a Linked List
查看>>
PHP编译安装时常见错误及解决办法,大全
查看>>
获取动态创建的元素触发点击事件
查看>>
策略模式
查看>>
Git Cmd
查看>>
Software Tesing HW2
查看>>
收益率
查看>>
2. 更多标准模块
查看>>
Python中文处理(转)
查看>>
Cocos2d-x之的动作混合
查看>>
linux安装Django 以及 生产环境部署实现高并发
查看>>
jQuery.holdReady()方法用法实例
查看>>
Bootstrap3基础 dropdown divider 下拉列表中的分割线
查看>>
LF_50_Tweaked Identical Binary Trees
查看>>
Solr实现Low Level查询解析(QParser)
查看>>
[BZOJ1040][ZJOI2008]骑士(树形DP)
查看>>
2015年10月24号 哇,原来这JSP页面还可以用这东西!
查看>>
Selenium基础
查看>>
iOS 沙盒
查看>>