.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">ITPUB个人空间7y$[#IC
q
<
Grid.RowDefinitions>
-qW3K-S0N)K0<
RowDefinitionHeight="40"></RowDefinition>
&ysz1j8B0<
RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间@7xvwh']%f"jCT5_
<
RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间(N-CKe+~X9T?
<
RowDefinitionHeight="40"></RowDefinition>
&G z'yC AQ0<
RowDefinitionHeight="140"></RowDefinition>
~3F[;Q1g9kz'jAL0</
Grid.RowDefinitions>
~[$w vwS8\'G%S.Ew)`0<
Grid.ColumnDefinitions>ITPUB个人空间,p5^V"B'Ht bIY}
<
ColumnDefinitionWidth="300"></ColumnDefinition>ITPUB个人空间 c|:~i!C/N8T${1_ b
<
ColumnDefinitionWidth="300"></ColumnDefinition>
5v#yOk ln_0</
Grid.ColumnDefinitions>ITPUB个人空间3d;t(dH D

H3Jl#E5uA3X'Z0<
TextBlockText="Name:"Style="{StaticResourcetitle}"
(Kt%Ff\om@ N0
Grid.Row="0"Grid.Column="0"></TextBlock>ITPUB个人空间)y+q7s-b lC
<
TextBlockx:Name="Name"Style="{StaticResourcecontent}"ITPUB个人空间3l[ ohL0_3\O
Grid.Row="0"Grid.Column="1"></TextBlock>
y;Zs]0v8@(t0
h]BZS|j0<
TextBlockText="BrowserVersion:"Style="{StaticResourcetitle}"
,n o'm`8X0
Grid.Row="1"Grid.Column="0"></TextBlock>ITPUB个人空间3XRq1I|2aT I
<
TextBlockx:Name="BrowserVersion"Style="{StaticResourcecontent}"ITPUB个人空间Q&X1yLCN9~
Grid.Row="1"Grid.Column="1"></TextBlock>ITPUB个人空间-pA'|P7Kl

~;N2m`^f3V"_M c0<
TextBlockText="CookiesEnabled:"Style="{StaticResourcetitle}"
7t#`zq[0
Grid.Row="2"Grid.Column="0"></TextBlock>ITPUB个人空间-K#{%S\d`(r D5G(Vn
<
TextBlockx:Name="CookiesEnabled"Style="{StaticResourcecontent}"ITPUB个人空间 E+IQ*] XF
Grid.Row="2"Grid.Column="1"></TextBlock>
7{_"UA5RS0ITPUB个人空间$K2rf:c;\$JZ g0xx
<
TextBlockText="Platform.:"Style="{StaticResourcetitle}"ITPUB个人空间b&s$d;I%L"\7e#I
Grid.Row="3"Grid.Column="0"></TextBlock>ITPUB个人空间'h ?5{ y!fO
<
TextBlockx:Name="Platform"Style="{StaticResourcecontent}"ITPUB个人空间0MY2J3@-Xgr)V
Grid.Row="3"Grid.Column="1"></TextBlock>ITPUB个人空间?V:Lf$?
ITPUB个人空间xcYI2gO @~2q+N
<
TextBlockText="UserAgent:"Style="{StaticResourcetitle}"ITPUB个人空间3xBIJMD9Y5t9H
Grid.Row="4"Grid.Column="0"></TextBlock>
6p0gFH#gX+H [,u0<
TextBlockx:Name="UserAgent"Style="{StaticResourcecontent}"ITPUB个人空间 Of&c#f2e1Z9s'n&s
Grid.Row="4"Grid.Column="1"TextWrapping="Wrap"></TextBlock>
%~-m"e9e-s@^g"{0</
Grid>

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

private voidUserControl_Loaded(objectsender,RoutedEventArgse)ITPUB个人空间Y$qWLg
Q|
{
7P6^#n GR7Ml1M0BrowserInformationbrowser =HtmlPage.BrowserInformation;
.G-T(c3yW;e$d-{l0ITPUB个人空间s{]:fz{,b p
Name.Text = browser.Name;
Ug+_CK{0BrowserVersion.Text = browser.BrowserVersion.ToString();
0B,Vi)? re4rL0CookiesEnabled.Text = browser.CookiesEnabled.ToString();
MbY"O8Y1ZR_2e3b0Platform.Text = browser.Platform;
_zJy!rL0UserAgent.Text = browser.UserAgent;
;n f)T;ku`0}

运行之后,如下图所示:ITPUB个人空间4D Ok#Z!_G#[
ITPUB个人空间3GZm P*s6sl

HttpUtility方法

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

<Gridx:Name="LayoutRoot"Background="#CDFCAE">ITPUB个人空间N|mU0c,w1u3wt0k
<
Grid.RowDefinitions>
(ISgCYv0<
RowDefinitionHeight="75"></RowDefinition>
&h|#@2Hh2u'^(g0<
RowDefinitionHeight="75"></RowDefinition>
mc_ZYH0<
RowDefinitionHeight="75"></RowDefinition>
a6x%vq?LY"lsR+i^0<
RowDefinitionHeight="75"></RowDefinition>ITPUB个人空间N5H1u r2pbXI
</
Grid.RowDefinitions>ITPUB个人空间X,y4uur\_+U8N?U
<
Grid.ColumnDefinitions>
] }F"w _j0<
ColumnDefinitionWidth="400"></ColumnDefinition>
0|[j,fiW0<
ColumnDefinitionWidth="200"></ColumnDefinition>
~.G1n9h.Gp0</
Grid.ColumnDefinitions>ITPUB个人空间:F"E6m5U;tH
ITPUB个人空间[tD@-Xv2T
<
TextBoxx:Name="txtHtmlEncode"Grid.Row="0"Grid.Column="0"ITPUB个人空间:a1pe;LA e:P KP!M
Width="300"Height="40"></TextBox>
(O0x}]`G j\0<
Buttonx:Name="btnHtmlEncode"Grid.Row="0"Grid.Column="1"
u-B5[U7y0P8yQZ6?R"^a0
Background="Red"Width="120"Height="40"Content="HtmlEncode"
1C[7d)zH:p2Z,M5tT.h0
Click="btnHtmlEncode_Click"></Button>ITPUB个人空间%x#qw@2{(B8q

D;~A&r%u0}7}0<
TextBoxx:Name="txtHtmlDecode"Grid.Row="1"Grid.Column="0"ITPUB个人空间 URpx7w$T V
Width="300"Height="40"></TextBox>ITPUB个人空间3}i8e"eu3NV]
<
Buttonx:Name="btnHtmlDecode"Grid.Row="1"Grid.Column="1"ITPUB个人空间H `x/dA_
Background="Red"Width="120"Height="40"Content="HtmlDecode"
0G&x%wML0
Click="btnHtmlDecode_Click"></Button>
u&Y:xCQ*Bu0
!?5CI B/|)n0k B-i;^0<
TextBoxx:Name="txtUrlEncode"Grid.Row="2"Grid.Column="0"
T!W/uA#C'x0qV0
Width="300"Height="40"></TextBox>
,]UF,pa-UW*p}0<
Buttonx:Name="btnUrlEncode"Grid.Row="2"Grid.Column="1"
AWIKF8qHy\0
Background="Red"Width="120"Height="40"Content="UrlEncode"
`(U,d~Z$`]G'C,[0
Click="btnUrlEncode_Click"></Button>ITPUB个人空间*Y.J@4?:xCF
ITPUB个人空间pr.l7]b9`
<
TextBoxx:Name="txtUrlDecode"Grid.Row="3"Grid.Column="0"ITPUB个人空间{_7P+[f+N];NY
Width="300"Height="40"></TextBox>
1@ ]DXC9A|}_0<
Buttonx:Name="btnUrlDecode"Grid.Row="3"Grid.Column="1"
b(Z WZ h0
Background="Red"Width="120"Height="40"Content="UrlDecode"
KW9e:zH`v0
Click="btnUrlDecode_Click"></Button>
R/d9rN8L0</
Grid>

编写按钮处理事件:

private voidbtnHtmlEncode_Click(objectsender,RoutedEventArgse)ITPUB个人空间y(QB,?
C
{
:I9_ U&t,K v,e0this.txtHtmlDecode.Text =HttpUtility.HtmlEncode(this.txtHtmlEncode.Text);ITPUB个人空间E6LTso9[[%Q
}ITPUB个人空间~#`.M[ o8K!Pe D%v3N
ITPUB个人空间/G X"[TFE#WL-Q
private voidbtnHtmlDecode_Click(objectsender,RoutedEventArgse)
b`U7uf7t!Oo2T-\.l0{
,O*L,GjoL^0this.txtHtmlEncode.Text =HttpUtility.HtmlDecode(this.txtUrlDecode.Text);ITPUB个人空间vvnc*u!_ ZyP
}ITPUB个人空间q2}7~+y f7?0jp+e
ITPUB个人空间]U1^.G?sZew4M
private voidbtnUrlEncode_Click(objectsender,RoutedEventArgse)
L'uV%{S0{ITPUB个人空间y OI.D+]5o
this.txtUrlDecode.Text =HttpUtility.UrlEncode(this.txtUrlEncode.Text);
wX"_s~^{0}ITPUB个人空间m2C @"L]&cg&QA h

t w7g"p"?%y2J0private voidbtnUrlDecode_Click(objectsender,RoutedEventArgse)
)GH}j o!n0{ITPUB个人空间}dO f|#y|
this.txtUrlEncode.Text =HttpUtility.UrlDecode(this.txtUrlDecode.Text);
O|*]$j6x:})r0}

运行后测试如下:
%GV!vORn b:f0ITPUB个人空间$E N2z0z0`M vl

结束语

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

作者:TerryLeeITPUB个人空间 eg~ j-@K
出处:http://terrylee.cnblogs.com

ITPUB个人空间S[)KLG t v\f


TAG:

 

评分:0

我来说两句

显示全部

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

日历

« 2012-02-10  
   1234
567891011
12131415161718
19202122232425
26272829   

数据统计

  • 访问量: 665817
  • 日志数: 3733
  • 影音数: 7
  • 文件数: 1
  • 建立时间: 2008-01-04
  • 更新时间: 2010-12-31

RSS订阅

Open Toolbar