<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      一步一步學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去查詢書籍的價格,并顯示出來,最終的效果如下:

      TerryLee_Silverlight2_0059

      編寫界面布局,XAML如下:

      <Grid Background="#46461F">
          <Grid.RowDefinitions>
              <RowDefinition Height="40"></RowDefinition>
              <RowDefinition Height="*"></RowDefinition>
              <RowDefinition Height="40"></RowDefinition>
          </Grid.RowDefinitions>
          <Grid.ColumnDefinitions>
              <ColumnDefinition></ColumnDefinition>
          </Grid.ColumnDefinitions>
          <Border Grid.Row="0" Grid.Column="0" CornerRadius="15"
                  Width="240" Height="36"
                  Margin="20 0 0 0" HorizontalAlignment="Left">
              <TextBlock Text="書籍列表" Foreground="White"
                         HorizontalAlignment="Left" VerticalAlignment="Center"
                         Margin="20 0 0 0"></TextBlock>
          </Border>
          <ListBox x:Name="Books" Grid.Row="1" Margin="40 10 10 10"
                   SelectionChanged="Books_SelectionChanged">
              <ListBox.ItemTemplate>
                  <DataTemplate>
                      <StackPanel>
                          <TextBlock Text="{Binding Name}" Height="32"></TextBlock>
                      </StackPanel>
                  </DataTemplate>
              </ListBox.ItemTemplate>
          </ListBox>
          <Border Grid.Row="2" Grid.Column="0" CornerRadius="15"
                  Width="240" Height="36" Background="Orange"
                  Margin="20 0 0 0" HorizontalAlignment="Left">
              <TextBlock x:Name="lblPrice" Text="價格:" Foreground="White"
                         HorizontalAlignment="Left" VerticalAlignment="Center"
                         Margin="20 0 0 0"></TextBlock>
          </Border>
      </Grid>

      為了模擬查詢價格,我們編寫一個HttpHandler,接收書籍的No,并返回價格:

      public class BookHandler : IHttpHandler
      {
          public static readonly string[] PriceList = new string[] { 
              "66.00",
              "78.30",
              "56.50",
              "28.80",
              "77.00"
          };
          public void ProcessRequest(HttpContext context)
          {
              context.Response.ContentType = "text/plain";
              context.Response.Write(PriceList[Int32.Parse(context.Request.QueryString["No"])]);
          }
      
          public bool IsReusable
          {
              get
              {
                  return false;
              }
          }
      }

      在界面加載時綁定書籍列表,關于數據綁定可以參考一步一步學Silverlight 2系列(11):數據綁定

      void UserControl_Loaded(object sender, RoutedEventArgs e)
      {
          List<Book> books = new List<Book>() { 
              new Book("Professional ASP.NET 3.5"),
              new Book("ASP.NET AJAX In Action"),
              new Book("Silverlight In Action"),
              new Book("ASP.NET 3.5 Unleashed"),
              new Book("Introducing Microsoft ASP.NET AJAX")
          };
      
          Books.ItemsSource = books;
          
      }

      接下來當用戶選擇一本書籍時,需要通過Web Client去獲取書籍的價格,在Silverlight 2中,所有的網絡通信API都設計為了異步模式。在聲明一個Web Client實例后,我們需要為它注冊DownloadStringCompleted事件處理方法,在下載完成后將會被回調,然后再調用DownloadStringAsync方法開始下載。

      void Books_SelectionChanged(object sender, SelectionChangedEventArgs e)
      {
          Uri endpoint = new Uri(String.Format("http://localhost:49955/BookHandler.ashx?No={0}",Books.SelectedIndex));
      
          WebClient client = new WebClient();
          client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
          
          client.DownloadStringAsync(endpoint);
      }
      
      void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
      {
          if (e.Error == null)
          {
              lblPrice.Text = "價格:" + e.Result;
          }
          else
          {
              lblPrice.Text = e.Error.Message;
          }
      }

      注意大家可以在Web Application Project的屬性頁中,把ASP.NET Development Server的端口號設置為一個固定的端口號:

      TerryLee_Silverlight2_0060

      最后完整的代碼如下:

      public partial class Page : UserControl
      {
          public Page()
          {
              InitializeComponent();
          }
      
          void UserControl_Loaded(object sender, RoutedEventArgs e)
          {
              List<Book> books = new List<Book>() { 
                  new Book("Professional ASP.NET 3.5"),
                  new Book("ASP.NET AJAX In Action"),
                  new Book("Silverlight In Action"),
                  new Book("ASP.NET 3.5 Unleashed"),
                  new Book("Introducing Microsoft ASP.NET AJAX")
              };
      
              Books.ItemsSource = books;
              
          }
      
          void Books_SelectionChanged(object sender, SelectionChangedEventArgs e)
          {
              Uri endpoint = new Uri(String.Format("http://localhost:49955/BookHandler.ashx?No={0}",Books.SelectedIndex));
      
              WebClient client = new WebClient();
              client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
              
              client.DownloadStringAsync(endpoint);
          }
      
          void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
          {
              if (e.Error == null)
              {
                  lblPrice.Text = "價格:" + e.Result;
              }
              else
              {
                  lblPrice.Text = e.Error.Message;
              }
          }
      }

      運行后效果如下:

      TerryLee_Silverlight2_0059

      當我們選擇其中一本書籍時,將會顯示出它的價格:

      TerryLee_Silverlight2_0061

      結束語

      本文簡單介紹了Silverlight 2中使用Web Client進行通信的知識,在Silverlight 2中,提供的通信API非常豐富,后面將會介紹其他的方式。你可以從這里下載本文示例代碼。

      下一篇:一步一步學Silverlight 2系列(13):數據與通信之WebRequest

      posted @ 2008-03-09 14:57  TerryLee  閱讀(32234)  評論(91)    收藏  舉報
      主站蜘蛛池模板: 亚洲www永久成人网站| 18禁黄网站禁片免费观看| 国产 一区二区三区视频| 免费AV手机在线观看片| 中文人妻熟妇乱又伦精品| 激情内射亚洲一区二区三区 | 国产午夜亚洲精品国产成人| 伊人精品成人久久综合97| 最近免费中文字幕大全| 国产午夜精品无码一区二区| 又粗又紧又湿又爽的视频| 乌兰县| 人妻少妇偷人精品免费看| 日本一区二区三区视频一| 99久久国产精品无码| 最新精品国偷自产在线美女足| 国产精品国产三级国产专| 日日噜噜夜夜狠狠久久无码区| 亚洲理论在线A中文字幕| 少妇被粗大的猛烈进出| 国产在线午夜不卡精品影院| 久久综合激情网| 国产精品综合一区二区三区 | 亚洲欧洲精品日韩av| 亚洲国产成人精品无码一区二区| 午夜福利激情一区二区三区| 国产色无码专区在线观看| 亚洲AV无码破坏版在线观看| 日日猛噜噜狠狠扒开双腿小说| 日韩一卡二卡三卡四卡五卡| 久久精品夜夜夜夜夜久久| 久久青青草原精品国产app| 激情文学一区二区国产区| 亚洲国产成人字幕久久| 少妇人妻偷人精品系列| 国内免费视频成人精品| 国产精品免费观看色悠悠| 日韩人妻中文字幕精品| 亚洲天堂成人网在线观看| 亚洲红杏AV无码专区首页| 麻豆国产va免费精品高清在线|