.NEt专家博客!

一步一步学Silverlight 2系列(24):与浏览器交互相关辅助方法

上一篇 / 下一篇  2008-04-11 21:11:09

概述

Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章将从Silverlight 2基础知识、数据与通信、自定义控件、动画、图形图像等几个方面带您快速进入Silverlight 2开发。

本文是Silverlight 2与浏览器交互的最后一篇,将介绍相关的辅助类方法。

获取浏览器信息

在Silverlight 2中提供了获取浏览器信息的一个类BrowserInformation,可供我们直接调用,如获取浏览器名称及浏览器版本,是否禁用Cookies等信息。做一个简单的示例,定义XAML如下:

<Gridx:Name="LayoutRoot"Background="#CDFCAE">
7ZE8fEG |0<
Grid.RowDefinitions>ITPUB个人空间.F;tKZ8S z/cU qV
<
RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间$O/S2n'N7M w
<
RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间5c ]2I3?A5S/b V
<
RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间Y6LI:G7|bM
<
RowDefinitionHeight="40"></RowDefinition>
E3Z @;`U7u `X0<
RowDefinitionHeight="140"></RowDefinition>ITPUB个人空间U+ltM"^?y3|6Z
</
Grid.RowDefinitions>
#s$sKZ$N0r ?b3Y0<
Grid.ColumnDefinitions>
R4YZ.GVE)W$Z-nu0<
ColumnDefinitionWidth="300"></ColumnDefinition>ITPUB个人空间"M ^(} t n
<
ColumnDefinitionWidth="300"></ColumnDefinition>
;\-a M1o&L4T1~t0</
Grid.ColumnDefinitions>
-h#F mc;~Xl0ITPUB个人空间 Av!J3mY!e0EY5m
<
TextBlockText="Name:"Style="{StaticResourcetitle}"ITPUB个人空间F1T:N q!@z#n W'}~2P!M
Grid.Row="0"Grid.Column="0"></TextBlock>ITPUB个人空间Jr3E vk Q
<
TextBlockx:Name="Name"Style="{StaticResourcecontent}"ITPUB个人空间zG!xVx
Grid.Row="0"Grid.Column="1"></TextBlock>ITPUB个人空间$PP9o$b4Q'u
ITPUB个人空间3JW"ob,C2T
<
TextBlockText="BrowserVersion:"Style="{StaticResourcetitle}"
W^o/rW.A v0
Grid.Row="1"Grid.Column="0"></TextBlock>
'P8I3a"jrL^q0<
TextBlockx:Name="BrowserVersion"Style="{StaticResourcecontent}"ITPUB个人空间eudv"P)I tmF
Grid.Row="1"Grid.Column="1"></TextBlock>ITPUB个人空间Zc]$z F%V%a

;k j/I{EiHm0~}!j(O0<
TextBlockText="CookiesEnabled:"Style="{StaticResourcetitle}"
7]&`r5E,jA0
Grid.Row="2"Grid.Column="0"></TextBlock>ITPUB个人空间Ma0rmB
<
TextBlockx:Name="CookiesEnabled"Style="{StaticResourcecontent}"ITPUB个人空间K4S-N:v`%u2?#|
Grid.Row="2"Grid.Column="1"></TextBlock>
5[@-S@6o j2yYC0ITPUB个人空间/zl L&z-ed
<
TextBlockText="Platform.:"Style="{StaticResourcetitle}"
aI9b ?&}'JjW+|g*z0
Grid.Row="3"Grid.Column="0"></TextBlock>ITPUB个人空间b`7F dm@
<
TextBlockx:Name="Platform"Style="{StaticResourcecontent}"ITPUB个人空间r ?(Jqk3B0z rQ
Grid.Row="3"Grid.Column="1"></TextBlock>ITPUB个人空间ifKI&S:k0e'A-r

'?9]D!Y0O0<
TextBlockText="UserAgent:"Style="{StaticResourcetitle}"
i} t ]1p K1tV1z0
Grid.Row="4"Grid.Column="0"></TextBlock>
t!Zr"JC{u0<
TextBlockx:Name="UserAgent"Style="{StaticResourcecontent}"ITPUB个人空间&R2R X ?1h J7Z3R S"Q;M4b
Grid.Row="4"Grid.Column="1"TextWrapping="Wrap"></TextBlock>
x"~6L6VYin1B0</
Grid>

在Loaded事件中获取相关信息:

private voidUserControl_Loaded(objectsender,RoutedEventArgse)ITPUB个人空间#@S.Y}q;Y
{ITPUB个人空间7p T8V @+c'e
BrowserInformationbrowser =HtmlPage.BrowserInformation;
a,X0}HWqp^0ITPUB个人空间l7X K@2E
Name.Text = browser.Name;
1FI'lDR [R0BrowserVersion.Text = browser.BrowserVersion.ToString();
GW9?.BUpz(e0CookiesEnabled.Text = browser.CookiesEnabled.ToString();
B,rth%L8z@0Platform.Text = browser.Platform;
N0{5R)s4|)?0UserAgent.Text = browser.UserAgent;
"f A8z5h(z"JC0u%u0}

运行之后,如下图所示:ITPUB个人空间4W fc!^$z

;b }w3n;\;T;s;h0

HttpUtility方法

类似于WebForm开发中一样,在Silverlight 2中同样提供了一一些HttpUtility方法,共有四个HtmlEncode、HtmlDecode、UrlEncode、UrlDecode,看一个简单的例子:

<Gridx:Name="LayoutRoot"Background="#CDFCAE">ITPUB个人空间6Ptl~^
<
Grid.RowDefinitions>
;q es*x`I&X'C0<
RowDefinitionHeight="75"></RowDefinition>ITPUB个人空间"LrWe~F&V}_
<
RowDefinitionHeight="75"></RowDefinition>ITPUB个人空间2|#W,X {x6D
<
RowDefinitionHeight="75"></RowDefinition>ITPUB个人空间 h!w iI'o)G)Ig
<
RowDefinitionHeight="75"></RowDefinition>
0m H)f\[)}2`;~0</
Grid.RowDefinitions>
OjSeK'@0<
Grid.ColumnDefinitions>ITPUB个人空间[6zcW+A oDY E6f~
<
ColumnDefinitionWidth="400"></ColumnDefinition>ITPUB个人空间ax`)h']&n)e
<
ColumnDefinitionWidth="200"></ColumnDefinition>
}7cC"n(zA4|0</
Grid.ColumnDefinitions>
+g9q Rzr5Qb!z0ITPUB个人空间MnP3W&h/`
<
TextBoxx:Name="txtHtmlEncode"Grid.Row="0"Grid.Column="0"
0P(|']7tt+c!jo0
Width="300"Height="40"></TextBox>ITPUB个人空间uuqGi2t"F"r
<
Buttonx:Name="btnHtmlEncode"Grid.Row="0"Grid.Column="1"
']~G/y:C$b7]_0
Background="Red"Width="120"Height="40"Content="HtmlEncode"
u ~)a_$}0
Click="btnHtmlEncode_Click"></Button>
8t+ME'A a%tV0ITPUB个人空间0P${u#S;dmt"z
<
TextBoxx:Name="txtHtmlDecode"Grid.Row="1"Grid.Column="0"
{7rqD] Ijq-i0
Width="300"Height="40"></TextBox>
.tldO'Ja0<
Buttonx:Name="btnHtmlDecode"Grid.Row="1"Grid.Column="1"ITPUB个人空间IIoZC"U,O
Background="Red"Width="120"Height="40"Content="HtmlDecode"
MJR+l8m)z s'f0
Click="btnHtmlDecode_Click"></Button>ITPUB个人空间lp!FN.o5?

@({vI[K0<
TextBoxx:Name="txtUrlEncode"Grid.Row="2"Grid.Column="0"ITPUB个人空间+Uh5T6qosh.I
Width="300"Height="40"></TextBox>ITPUB个人空间v n8rghp7l
<
Buttonx:Name="btnUrlEncode"Grid.Row="2"Grid.Column="1"ITPUB个人空间)k-m@;cK5iV
Background="Red"Width="120"Height="40"Content="UrlEncode"ITPUB个人空间)MUavR#C`
Click="btnUrlEncode_Click"></Button>ITPUB个人空间uys2K;[i\ Z!k

1vJq9YLT0<
TextBoxx:Name="txtUrlDecode"Grid.Row="3"Grid.Column="0"
1k"z:d os B jI!C*\O0
Width="300"Height="40"></TextBox>ITPUB个人空间,k:P _#y(Vz[
<
Buttonx:Name="btnUrlDecode"Grid.Row="3"Grid.Column="1"
3~y&D e FB0
Background="Red"Width="120"Height="40"Content="UrlDecode"
;D6O1XY+b?0
Click="btnUrlDecode_Click"></Button>ITPUB个人空间(E:`2o eg0A:f3u0y
</
Grid>

编写按钮处理事件:

private voidbtnHtmlEncode_Click(objectsender,RoutedEventArgse)ITPUB个人空间5d+b`|jB^XV
{
[Boh g6|'Z O0this.txtHtmlDecode.Text =HttpUtility.HtmlEncode(this.txtHtmlEncode.Text);
aX`H!r tuU4t0}
@%['y4X4UTQ-c6yV0ITPUB个人空间v9ABWUT\c
private voidbtnHtmlDecode_Click(objectsender,RoutedEventArgse)
+Uy:n`J%Cjo'n0{ITPUB个人空间5Z$U6TFKUJ/O;W)F
this.txtHtmlEncode.Text =HttpUtility.HtmlDecode(this.txtUrlDecode.Text);ITPUB个人空间&_?({"P6W$P]n%i x
}ITPUB个人空间(i*d pq_'y

'C@A,twVn0private voidbtnUrlEncode_Click(objectsender,RoutedEventArgse)
9uobz` B0{
h(r3H0P~hhFKo0this.txtUrlDecode.Text =HttpUtility.UrlEncode(this.txtUrlEncode.Text);
%Q)z |,^:Gy0}ITPUB个人空间 hJ1By7h&b
ITPUB个人空间 T vUUo(nM _
private voidbtnUrlDecode_Click(objectsender,RoutedEventArgse)ITPUB个人空间0uf8L/Q VB@F`
{ITPUB个人空间+a3qWUYn"p6\(n
this.txtUrlEncode.Text =HttpUtility.UrlDecode(this.txtUrlDecode.Text);ITPUB个人空间8F;l3t~ XO7p*do
}

运行后测试如下:ITPUB个人空间MVfu_ L{h
ITPUB个人空间Y3wBV,D5{

结束语

本文简单介绍了Silverlight 2与浏览器交互的相关辅助类方法。

作者:TerryLee
U,Hml"nJ7D0出处:http://terrylee.cnblogs.com

ITPUB个人空间}iDgg


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar