.NEt专家博客!
一步一步学Silverlight 2系列(24):与浏览器交互相关辅助方法
概述
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">
7ZE8f EG |0<Grid.RowDefinitions>ITPUB个人空间.F;tKZ8S z/cUqV
<RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间$O/S2n'N7Mw
<RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间5c ]2I3?A5S/bV
<RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间Y6LI:G7|bM
<RowDefinitionHeight="40"></RowDefinition>
E3Z @;`U7u `X0<RowDefinitionHeight="140"></RowDefinition>ITPUB个人空间U+l tM"^?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#Fmc;~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个人空间Jr3Evk 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 v0Grid.Row="1"Grid.Column="0"></TextBlock>
'P8I3a"jr L^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,jA0Grid.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*z0Grid.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]1pK1t V1z0Grid.Row="4"Grid.Column="0"></TextBlock>
t!Zr"JC{u0<TextBlockx:Name="UserAgent"Style="{StaticResourcecontent}"ITPUB个人空间&R2RX ?1h J7Z3RS"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个人空间7pT8V @+c'e
BrowserInformationbrowser =HtmlPage.BrowserInformation;
a,X0}HWqp^0ITPUB个人空间l7XK@2E
Name.Text = browser.Name;
1FI'lDR [R0BrowserVersion.Text = browser.BrowserVersion.ToString();
GW9?.BUp z(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个人空间4Wfc!^$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)I g
<RowDefinitionHeight="75"></RowDefinition>
0mH)f\[)}2`;~0</Grid.RowDefinitions>