.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">
8@~RA8SU)s Y-az0<
Grid.RowDefinitions>
a0?!?/\-r0<
RowDefinitionHeight="40"></RowDefinition>
4D*mC a.}~0<
RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间W(['ql`
<
RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间]{(cJ3o@
<
RowDefinitionHeight="40"></RowDefinition>
,FCg(e Eb7n"g&m0<
RowDefinitionHeight="140"></RowDefinition>ITPUB个人空间T1n$z+z4uH)I
</
Grid.RowDefinitions>
[;u4b"qo Q0<
Grid.ColumnDefinitions>
-S#KD Q j-|q!j?0<
ColumnDefinitionWidth="300"></ColumnDefinition>
EC0^Vxa[0<
ColumnDefinitionWidth="300"></ColumnDefinition>ITPUB个人空间m1|r!y Iwv
</
Grid.ColumnDefinitions>
Qv b2E d? wt a0
,Oo-A&Ia2NK*]Xe0<
TextBlockText="Name:"Style="{StaticResourcetitle}"
#flX,~bY@(P0
Grid.Row="0"Grid.Column="0"></TextBlock>ITPUB个人空间.VTQd#r$S!GG%DP%V
<
TextBlockx:Name="Name"Style="{StaticResourcecontent}"ITPUB个人空间|`ov _W
Grid.Row="0"Grid.Column="1"></TextBlock>ITPUB个人空间G v!SJ~2tUIZ7z9v

,S%O3L3k6mbU!S5y)?%{0<
TextBlockText="BrowserVersion:"Style="{StaticResourcetitle}"ITPUB个人空间sW)C(hp3w_EQ@
Grid.Row="1"Grid.Column="0"></TextBlock>
F ? D g:c C)?0<
TextBlockx:Name="BrowserVersion"Style="{StaticResourcecontent}"
4?(y cY5lkO VJf K0
Grid.Row="1"Grid.Column="1"></TextBlock>ITPUB个人空间l}a&d9Zr E4eN

V]j!e$O](k3O0<
TextBlockText="CookiesEnabled:"Style="{StaticResourcetitle}"
U6e.hN7S%JG0
Grid.Row="2"Grid.Column="0"></TextBlock>
y.Y|(nA-_/^6q0<
TextBlockx:Name="CookiesEnabled"Style="{StaticResourcecontent}"ITPUB个人空间V+C U(]h9s g
Grid.Row="2"Grid.Column="1"></TextBlock>ITPUB个人空间5U.^h.Sw3yf V,[
ITPUB个人空间M9xO?+IH-@s&jIeh
<
TextBlockText="Platform.:"Style="{StaticResourcetitle}"ITPUB个人空间E'N }m RF6f8a7{
Grid.Row="3"Grid.Column="0"></TextBlock>ITPUB个人空间3i,M J:a(g\sC
<
TextBlockx:Name="Platform"Style="{StaticResourcecontent}"ITPUB个人空间Z#l:[.{'@+?'^*l&^
Grid.Row="3"Grid.Column="1"></TextBlock>ITPUB个人空间+{3Ze'YN9d i
ITPUB个人空间x _t2K&k8iI"A;~Ib,^
<
TextBlockText="UserAgent:"Style="{StaticResourcetitle}"ITPUB个人空间&K1\~,aJ
Grid.Row="4"Grid.Column="0"></TextBlock>ITPUB个人空间 QKm*f1RT6\8y-k
<
TextBlockx:Name="UserAgent"Style="{StaticResourcecontent}"ITPUB个人空间d r|1j_lE)Nvb
Grid.Row="4"Grid.Column="1"TextWrapping="Wrap"></TextBlock>ITPUB个人空间4_,~0Ok+f!];U'?G
</
Grid>

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

private voidUserControl_Loaded(objectsender,RoutedEventArgse)
&ZSg(H \0{ITPUB个人空间sq5u!C/r
BrowserInformationbrowser =HtmlPage.BrowserInformation;ITPUB个人空间b ] g[ ]\Y| w;F

&NQ9fi/I0a9q0Name.Text = browser.Name;ITPUB个人空间H Sc B [ EY.[pl
BrowserVersion.Text = browser.BrowserVersion.ToString();
:DCR[Syv0CookiesEnabled.Text = browser.CookiesEnabled.ToString();
|(d L t)d%}_S0Platform.Text = browser.Platform;ITPUB个人空间3VD"_Z wR
UserAgent.Text = browser.UserAgent;ITPUB个人空间+b*o-c+D6ai:yC6O
}

运行之后,如下图所示:
lP%hw+q[8Jv4d#E0ITPUB个人空间 sd([&T.F)P/^

HttpUtility方法

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

<Gridx:Name="LayoutRoot"Background="#CDFCAE">
RD*Q0k@#Y$K:@-_0<
Grid.RowDefinitions>ITPUB个人空间 H6o,uNJ ~y Zl;\
<
RowDefinitionHeight="75"></RowDefinition>ITPUB个人空间 F8O9]-|)E~ i L
<
RowDefinitionHeight="75"></RowDefinition>ITPUB个人空间 OU$l"@"] npb}
<
RowDefinitionHeight="75"></RowDefinition>
A0@q [xilv9Y4?+T0<
RowDefinitionHeight="75"></RowDefinition>ITPUB个人空间 [8K/o:^o0g:~w
</
Grid.RowDefinitions>ITPUB个人空间!|RT6f f(wn^
<
Grid.ColumnDefinitions>
q0w(F1M-qr(jc8|:gb G0<
ColumnDefinitionWidth="400"></ColumnDefinition>
1i| H~%x ]p(\0<
ColumnDefinitionWidth="200"></ColumnDefinition>ITPUB个人空间/AD8~g4OW S o!n,J
</
Grid.ColumnDefinitions>
&].@7C9uNd HP"v E0ITPUB个人空间Mhdz:T!z6a%}R Zh
<
TextBoxx:Name="txtHtmlEncode"Grid.Row="0"Grid.Column="0"
9jA3?p6YF'~0
Width="300"Height="40"></TextBox>ITPUB个人空间X;cD4o`\D/j!t
<
Buttonx:Name="btnHtmlEncode"Grid.Row="0"Grid.Column="1"ITPUB个人空间2YW `7M"R(Dt7v
Background="Red"Width="120"Height="40"Content="HtmlEncode"
Y LW_C{"]c@0
Click="btnHtmlEncode_Click"></Button>ITPUB个人空间$t!|d0P(D4B

G-q6`;w&s L;n|0<
TextBoxx:Name="txtHtmlDecode"Grid.Row="1"Grid.Column="0"ITPUB个人空间Y'{;hWz{
Width="300"Height="40"></TextBox>ITPUB个人空间V2G y9]y%k(aAP
<
Buttonx:Name="btnHtmlDecode"Grid.Row="1"Grid.Column="1"
0i|Dj$B;?^2A(Q-s0
Background="Red"Width="120"Height="40"Content="HtmlDecode"
%@ ~`.D C-w?$D FB0
Click="btnHtmlDecode_Click"></Button>ITPUB个人空间Zdnk3s-fyD:HGas
ITPUB个人空间#EAW4|0eJ\M
<
TextBoxx:Name="txtUrlEncode"Grid.Row="2"Grid.Column="0"
!T&F?WW+wr~9b0
Width="300"Height="40"></TextBox>
IY GN^ A(r0<
Buttonx:Name="btnUrlEncode"Grid.Row="2"Grid.Column="1"
+g6K4u9m9L0t?!v0
Background="Red"Width="120"Height="40"Content="UrlEncode"
$phR#F#w;Na0
Click="btnUrlEncode_Click"></Button>ITPUB个人空间3zhe(u,^%IZV/^x
ITPUB个人空间H$p Kp,?
<
TextBoxx:Name="txtUrlDecode"Grid.Row="3"Grid.Column="0"
[ldZ,a0
Width="300"Height="40"></TextBox>ITPUB个人空间VO6v)mj'u|
<
Buttonx:Name="btnUrlDecode"Grid.Row="3"Grid.Column="1"
4ik.CM#L|0
Background="Red"Width="120"Height="40"Content="UrlDecode"ITPUB个人空间\6T1yK$ha
Click="btnUrlDecode_Click"></Button>
lVIL)K+|]t)M0</
Grid>

编写按钮处理事件:

private voidbtnHtmlEncode_Click(objectsender,RoutedEventArgse)
,V5Kyeh PJi {4B0{ITPUB个人空间 ET"Y%e[Cj
this.txtHtmlDecode.Text =HttpUtility.HtmlEncode(this.txtHtmlEncode.Text);ITPUB个人空间 D rh#Neb(C)tl#w
}
:}7w(K?j@&l"yG;r1O0
aX u v1zx'B(`6J0private voidbtnHtmlDecode_Click(objectsender,RoutedEventArgse)ITPUB个人空间c fAnvBwz
{
F'p \ \d3Ct7iN%\0this.txtHtmlEncode.Text =HttpUtility.HtmlDecode(this.txtUrlDecode.Text);
3_ K:j"P+Sb0}ITPUB个人空间:^,GT.XHm7q
ITPUB个人空间I P B/HI fw aL}+?5c
private voidbtnUrlEncode_Click(objectsender,RoutedEventArgse)ITPUB个人空间:qHWs&y?Xo6P
{
\i$|UL_ R0this.txtUrlDecode.Text =HttpUtility.UrlEncode(this.txtUrlEncode.Text);ITPUB个人空间+Y~9['{ i,L][
}ITPUB个人空间1V&U%B:Q+?6J

w&Yk%\g]0private voidbtnUrlDecode_Click(objectsender,RoutedEventArgse)
t*|0N;Y4?0{
#Z-D$RO dJ0this.txtUrlEncode.Text =HttpUtility.UrlDecode(this.txtUrlDecode.Text);ITPUB个人空间%X7T]4h1W+?jL,}a
}

运行后测试如下:
aYE:Pu Py9cG0
H"DmZ t,Th-ju0

结束语

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

作者:TerryLee
O3Ch"D+i7U2y0出处:http://terrylee.cnblogs.com


M%WA%V'O#O%?$pr0


TAG:

 

评分:0

我来说两句

显示全部

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

日历

« 2008-09-05  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 34669
  • 日志数: 835
  • 影音数: 7
  • 文件数: 1
  • 建立时间: 2008-01-04
  • 更新时间: 2008-09-05

RSS订阅

Open Toolbar