.NEt专家博客!
【李会军】一步一步学Silverlight 2系列(12):数据与通信之WebClient
概述
Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入Silverlight 2开发。
本文将介绍如何在Silverlight 2中使用Web Client进行通信。
简单示例
编写一个简单的示例,在该示例中,选择一本书籍之后,我们通过Web Client去查询书籍的价格,并显示出来,最终的效果如下:
3Z3o1? t)c$O!G l0
ITPUB个人空间4IEXz/`j
编写界面布局,XAML如下:
<GridBackground="#46461F">ITPUB个人空间#xG%z*F8d%\5cQ
<Grid.RowDefinitions>ITPUB个人空间 I1at lqCl#[]
<RowDefinitionHeight="40"></RowDefinition>ITPUB个人空间"?2Z!s3w#KN:]|x;t'_-k
<RowDefinitionHeight="*"></RowDefinition>ITPUB个人空间4U^_M9n7j:d
<RowDefinitionHeight="40"></RowDefinition>
BVI$y&KgG0</Grid.RowDefinitions>
1?;Psb"_u+L0<Grid.ColumnDefinitions>ITPUB个人空间.Y A y-~-JN#X'?&f/u
<ColumnDefinition></ColumnDefinition>
7lY(VY+t7Nt0</Grid.ColumnDefinitions>ITPUB个人空间%?M.R0A.`Iq;\:Mo
<BorderGrid.Row="0"Grid.Column="0"CornerRadius="15"ITPUB个人空间(~R4tG4{Eg-HA
Width="240"Height="36"
4n3b0Xym"f6cj0Margin="20 0 0 0"HorizontalAlignment="Left">
/W*]JjO+jo&qH:_0<TextBlockText="书籍列表"Foreground="White"
&EJ[k'RL@&H:l^0HorizontalAlignment="Left"VerticalAlignment="Center"ITPUB个人空间5_|t8H3A8P1P'j
Margin="20 0 0 0"></TextBlock>
3D7xsW:o0xZ L'V9s0</Border>
]2coh4P3i0<ListBoxx:Name="Books"Grid.Row="1"Margin="40 10 10 10"ITPUB个人空间2OQwe3D1}^
SelectionChanged="Books_SelectionChanged">
jsyB(ga jR0<ListBox.ItemTemplate>
e/WA(]yJj/?\ M Z0<DataTemplate>
p)|*Yq:N9N$FW$J;N5_ n6G0<StackPanel>ITPUB个人空间;^BtI Xc0]:_
<TextBlockText="{BindingName}"Height="32"></TextBlock>ITPUB个人空间c&V&U0jz I[
</StackPanel>
:^8AXav%Z ?;k0</DataTemplate>ITPUB个人空间O!l T8QyIsvT$R
</ListBox.ItemTemplate>
S-T!^.Oo)CeTZ0</ListBox>
4AoJ o7n0<BorderGrid.Row="2"Grid.Column="0"CornerRadius="15"
.|Gn)L7_v0Width="240"Height="36"Background="Orange"
3noF3[(v|$M0Margin="20 0 0 0"HorizontalAlignment="Left">
g ~ g$HGW^#B0<TextBlockx:Name="lblPrice"Text="价格:"Foreground="White"ITPUB个人空间 R6{+[vx0C,L1N
HorizontalAlignment="Left"VerticalAlignment="Center"ITPUB个人空间V9B w7r"`;FG
Margin="20 0 0 0"></TextBlock>
+X+@_6H!l.^{t r0</Border>ITPUB个人空间8G-Mz:Q;F3G0{*A
</Grid>
为了模拟查询价格,我们编写一个HttpHandler,接收书籍的No,并返回价格:
public classBookHandler:IHttpHandler
MB+B{&r _a(zk2J0{
adm"YZ i/u0public static readonly string[] PriceList =new string[] {
H*wB6S9lp1Xu0"66.00",ITPUB个人空间y [8y\ d$TF%B
"78.30",ITPUB个人空间d@!BY+H xhS4w!e
"56.50",
i)E?d-S4AC"Rt0"28.80",
HQ^4S;zy BZ0"77.00"ITPUB个人空间E%O;H7?s5[
};ITPUB个人空间W(O\\ B
public voidProcessRequest(HttpContextcontext)ITPUB个人空间'tZ puY e"p!Fg)}
{ITPUB个人空间ol)X"_ShI
context.Response.ContentType ="text/plain";
;P9c&u3M(?n||!i^0context.Response.Write(PriceList[Int32.Parse(context.Request.QueryString["No"])]);ITPUB个人空间"d8C&U