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

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

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

      一步一步學Silverlight 2系列(18):綜合實例之RSS閱讀器

      概述

      Silverlight 2 Beta 1版本發布了,無論從Runtime還是Tools都給我們帶來了很多的驚喜,如支持框架語言Visual Basic, Visual C#, IronRuby, Ironpython,對JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步學Silverlight 2系列》文章將從Silverlight 2基礎知識、數據與通信、自定義控件、動畫、圖形圖像等幾個方面帶您快速進入Silverlight 2開發

      本文將綜合前面十七篇講過的界面布局、樣式、控件模板、數據綁定、網絡通信等幾個方面,來開發一個綜合實例——簡易RSS閱讀器。

      界面布局

      我們最終完成的RSS閱讀器界面如下:

      TerryLee_Silverlight2_0082

      定義一個三行兩列的Grid,分別放置頂部信息、分割線和下面的內容區:

      <Grid.RowDefinitions>
          <RowDefinition Height="50"></RowDefinition>
          <RowDefinition Height="20"></RowDefinition>
          <RowDefinition Height="*"></RowDefinition>
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
          <ColumnDefinition Width="240"></ColumnDefinition>
          <ColumnDefinition Width="*"></ColumnDefinition>
      </Grid.ColumnDefinitions>

      設計頂部輸入區域,對Grid第一行做合并,并且放置一個StackPanel:

      <StackPanel x:Name="Header" Orientation="Horizontal"
                   Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2">
          <Image Source="Rss.png" Width="32" Height="32" Margin="10 0 10 0"></Image>
          <Border Style="{StaticResource titleBorder}">
              <TextBlock Text="基于Silverlight的RSS閱讀器" Foreground="#FFFFFF"
                         VerticalAlignment="Center" Margin="12 0 0 0"></TextBlock>
          </Border>
          <WatermarkedTextBox x:Name="feedAddress" Width="300" Height="35"
                              FontSize="16" Margin="10 0 10 0">
              <WatermarkedTextBox.Watermark>
                  <TextBlock Text="請輸入有效的RSS地址" VerticalAlignment="Center"
                             Foreground="#FBA430" FontSize="16"></TextBlock>
              </WatermarkedTextBox.Watermark>
          </WatermarkedTextBox>
          <Button x:Name="displayButton" Style="{StaticResource button}"
                  Content="顯 示" Click="displayButton_Click"></Button>
          <Button x:Name="fullScreenButton" Style="{StaticResource button}"
                  Content="全 屏" Click="fullScreenButton_Click"></Button>
      </StackPanel>

      鑒于兩個按鈕的風格一致,在App.xaml中定義一個button樣式:

      <Style x:Key="button" TargetType="Button">
          <Setter Property="Width" Value="100"></Setter>
          <Setter Property="Height" Value="35"></Setter>
          <Setter Property="Background" Value="#FBA430"></Setter>
          <Setter Property="Foreground" Value="#FBA430"></Setter>
          <Setter Property="FontSize" Value="16"></Setter>
      </Style>
      <Style x:Key="titleBorder" TargetType="Border">
          <Setter Property="CornerRadius" Value="10"></Setter>
          <Setter Property="Width" Value="220"></Setter>
          <Setter Property="Height" Value="40"></Setter>
          <Setter Property="Background">
              <Setter.Value>
                  <LinearGradientBrush StartPoint="0,0">
                      <GradientStop Color="#FBA430" Offset="0.0" />
                      <GradientStop Color="#FEF4E7" Offset="0.5" />
                      <GradientStop Color="#FBA430" Offset="1.0" />
                  </LinearGradientBrush>
              </Setter.Value>
          </Setter>
      </Style>
      定義分割線,用Rectangle來表示:
      <StackPanel Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" VerticalAlignment="Center">
          <Rectangle Style="{StaticResource rectangle}"/>
      </StackPanel>

      為了顯示出漸變的樣式,我們定義樣式如下:

      <Style x:Key="rectangle" TargetType="Rectangle">
          <Setter Property="Width" Value="780"></Setter>
          <Setter Property="Height" Value="5"></Setter>
          <Setter Property="RadiusX" Value="3"></Setter>
          <Setter Property="RadiusY" Value="3"></Setter>
          <Setter Property="Fill">
              <Setter.Value>
                  <LinearGradientBrush StartPoint="0,0">
                      <GradientStop Color="#FEF4E7" Offset="0.0" />
                      <GradientStop Color="#FBA430" Offset="1.0" />
                  </LinearGradientBrush>
              </Setter.Value>
          </Setter>
      </Style>
      定義左邊的列表區,用ListBox來顯示,并且定義ItemTemplate:
      <ListBox x:Name="PostsList" Grid.Column="0" Grid.Row="2"
               Margin="10 5 5 10" SelectionChanged="PostsList_SelectionChanged">
          <ListBox.ItemTemplate>
              <DataTemplate>
                  <TextBlock Text="{Binding Title.Text}" 
                                 TextWrapping="Wrap" Width="200"/>
              </DataTemplate>
          </ListBox.ItemTemplate>
      </ListBox>

      最后定義右邊的詳細信息區域,在StackPanel中垂直放置三個Border:

      <StackPanel x:Name="Detail" Grid.Column="1" Grid.Row="2">
          <Border CornerRadius="10" Background="#CDFCAE" Margin="10 5 10 10"
                  Width="540" Height="40">
              <TextBlock Text="{Binding Title.Text}"  TextWrapping="Wrap"
                         VerticalAlignment="Center" Foreground="Red"/>
          </Border>
          <Border CornerRadius="10" Background="#CDFCAE" Margin="10 5 10 10"
                  Width="540" Height="300">
              <TextBlock Text="{Binding Summary.Text}"  TextWrapping="Wrap"/>
          </Border>
          <Border CornerRadius="10" Background="#CDFCAE" Margin="10 5 10 10"
                  Width="540" Height="40">
              <StackPanel Orientation="Horizontal">
                  <TextBlock Text="評論日期:"  TextWrapping="Wrap"
                             Foreground="Red" VerticalAlignment="Center"/>
                  <TextBlock Text="{Binding PublishDate}"  TextWrapping="Wrap"
                             Foreground="Red" VerticalAlignment="Center"/>
              </StackPanel>
          </Border>
      </StackPanel>

      界面布局到此大功告成。

      實現功能

      下面實現數據的獲取,采用WebRequest來實現,也可以使用其他方式。

      /// <summary>
      /// 顯示列表
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
      private void displayButton_Click(object sender, RoutedEventArgs e)
      {
          Uri uri = new Uri(feedAddress.Text);
          WebRequest request = (WebRequest)WebRequest.Create(uri);
          request.BeginGetResponse(new AsyncCallback(responseReady), request);
      }
      
      void responseReady(IAsyncResult asyncResult)
      {
          WebRequest request = (WebRequest)asyncResult.AsyncState;
          WebResponse response = (WebResponse)request.EndGetResponse(asyncResult);
      
          XmlReader reader = XmlReader.Create(response.GetResponseStream());
          SyndicationFeed feed = SyndicationFeed.Load(reader);
      
          PostsList.ItemsSource = feed.Items;
      }

      顯示詳細信息:

      /// <summary>
      /// 查看詳細信息
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
      private void PostsList_SelectionChanged(object sender, SelectionChangedEventArgs e)
      {
          SyndicationItem item = PostsList.SelectedItem as SyndicationItem;
      
          Detail.DataContext = item;
      }

      實現全屏按鈕的代碼:

      /// <summary>
      /// 全屏顯示
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
      private void fullScreenButton_Click(object sender, RoutedEventArgs e)
      {
          Content contentObject = Application.Current.Host.Content;
          contentObject.IsFullScreen = !contentObject.IsFullScreen;
      }

      運行效果

      運行后界面如下:

      TerryLee_Silverlight2_0080 

      輸入豆瓣的最新影評Feed:

      TerryLee_Silverlight2_0081

      選擇其中一項后,將顯示出詳細信息:

       TerryLee_Silverlight2_0082

      結束語

      本文對前面十七篇內容做了一個小結,并開發出了一個簡易RSS閱讀器,你可以從這里下載本文示例代碼。

      下一篇:一步一步學Silverlight 2系列(19):如何在Silverlight中與HTML DOM交互(上)

      posted @ 2008-03-10 21:40  TerryLee  閱讀(18152)  評論(115)    收藏  舉報
      主站蜘蛛池模板: 亚洲小说乱欧美另类| 额敏县| 中国亚州女人69内射少妇| 国产成人精品视频不卡| 国产精品福利自产拍在线观看| 女同另类激情在线三区| 宁乡县| 中文字幕一区二区久久综合| 日韩精品国内国产一区二| 夜色资源站www国产在线视频| 国产区一区二区现看视频| 国产成人午夜福利在线播放| 亚洲午夜无码久久久久小说| 光棍天堂在线手机播放免费| 國产AV天堂| 志丹县| 国产精品va无码一区二区| 国产蜜臀av在线一区二区| 女同另类激情在线三区| 成人亚欧欧美激情在线观看| 色视频在线观看免费视频| 国产粉嫩高中无套进入| 国产成人午夜福利精品| 白丝乳交内射一二三区| 国产精品会所一区二区三区| 少妇人妻偷人精品系列| 精品国产污污免费网站入口| 免费观看全黄做爰大片| 精品国产国语对白主播野战| 国产午夜无码视频在线观看| 久久综合九色综合久桃花| 伦伦影院午夜理论片| 中文字幕人妻在线精品| 国产精品无遮挡又爽又黄| 在线a级毛片无码免费真人| 99久久亚洲综合精品成人网| 国产毛片基地| 又大又长粗又爽又黄少妇毛片| 国产精品午夜福利视频| 成人一区二区不卡国产| 日本精品网|