zoukankan      html  css  js  c++  java
  • vs2010 学习Silverlight学习笔记(16):RssRead

    概要:

           Sl已经学习有一段时间了,但总是怀疑已学的东西到底能不能做出一些东西。今天照着例子动手写一下,验证一下。

    内容:

           首先还是xaml的布局。都是一些控件的使用,但是让我来做肯定丑的自己都看不下去。以前最头疼的就是做页面,是没这方面细胞,还是根本就没好好练过?

    MainPage.xaml:

    <UserControlx:Class="SLDemo18RssRead.MainPage"

       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

       xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

       mc:Ignorable="d"

       d:DesignHeight="500" d:DesignWidth="800">

       <Grid x:Name="LayoutRoot"Background="#fef4e7">

           <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>

           <StackPanel x:Name="Header"Orientation="Horizontal"

       Grid.Row="0" Grid.Column="0"Grid.ColumnSpan="2">

               <Image  Width="32"Height="32" Margin="10 0 10 0"Source="/SLDemo18RssRead;component/Rss.png"></Image>

               <Border Style="{StaticResource titleBorder}">

                    <TextBlock Text="基于SL的RSS阅读器"Foreground="#ffffff"

                              VerticalAlignment="Center" Margin="12 0 00"></TextBlock>

               </Border>

               <TextBox x:Name="feedAddress" Width="300" Height="35"

                         FontSize="16"Margin="10 0 10 0"></TextBox>

               <Button x:Name="displayButton" Style="{StaticResourcebutton}"

                        Content="显 示" Click="displayButton_Click"></Button>

               <Button x:Name="fullScreenButton"Style="{StaticResource button}"

                        Content="全 屏" Click="fullScreenButton_Click"></Button>

           </StackPanel>

           <StackPanel Grid.Row="1" Grid.Column="0"Grid.ColumnSpan="2" VerticalAlignment="Center">

               <RectangleStyle="{StaticResource rectangle}"/>

           </StackPanel>

           <ListBox x:Name="PostsList" Grid.Column="0"Grid.Row="2"

                     Margin="10 5 5 10"SelectionChanged="PostsList_SelectionChanged">

               <ListBox.ItemTemplate>

                    <DataTemplate>

                        <TextBlockText="{Binding Title.Text}"

                                      TextWrapping="Wrap" Width="200"/>

                    </DataTemplate>

               </ListBox.ItemTemplate>

           </ListBox>

           <StackPanelx:Name="Detail" Grid.Column="1" Grid.Row="2">

               <Border CornerRadius="10" Background="#CDFCAE"Margin="10 5 10 10"

                        Width="540"Height="40">

                    <TextBlockText="{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="{BindingSummary.Text}" TextWrapping="Wrap"/>

               </Border>

               <Border CornerRadius="10" Background="#CDFCAE"Margin="10 5 10 10"

                        Width="540"Height="40">

                    <StackPanelOrientation="Horizontal">

                       <TextBlockText="评论日期:"  TextWrapping="Wrap"

                                  Foreground="Red" VerticalAlignment="Center"/>

                        <TextBlockText="{Binding PublishDate}" TextWrapping="Wrap"

                                  Foreground="Red" VerticalAlignment="Center"/>

                    </StackPanel>

               </Border>

           </StackPanel>

       </Grid>

    </UserControl>

    样式部分代码,AppPage.xaml:

    <Applicationxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

                x:Class="SLDemo18RssRead.App"

                >

       <Application.Resources>

           <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>

                        <LinearGradientBrushStartPoint="0,0">

                            <GradientStopColor="#FBA430" Offset="0.0" />

                            <GradientStopColor="#FEF4E7" Offset="0.5" />

                            <GradientStop Color="#FBA430"Offset="1.0" />

                       </LinearGradientBrush>

                    </Setter.Value>

               </Setter>

           </Style>

           <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>

                        <LinearGradientBrushStartPoint="0,0">

                            <GradientStopColor="#FEF4E7" Offset="0.0" />

                            <GradientStopColor="#FBA430" Offset="1.0" />

                       </LinearGradientBrush>

                    </Setter.Value>

               </Setter>

           </Style>

       </Application.Resources>

    </Application>

    代码:

    /// <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 fullScreenButton_Click(object sender, RoutedEventArgs e)

           {

               Content contentObject = Application.Current.Host.Content;

               contentObject.IsFullScreen = !contentObject.IsFullScreen;

           }

           /// <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;

           }

    注:

    代码所需的引用:

           System.Xml.LinQ;

    System.ServiceModel;

           System.ServiceModel.Syndication;

    引入的命名空间总共有:

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Net;

    using System.Windows;

    using System.Windows.Controls;

    using System.Windows.Documents;

    using System.Windows.Input;

    using System.Windows.Media;

    using System.Windows.Media.Animation;

    using System.Windows.Shapes;

    using System.Xml;

    using System.Xml.Linq;

    using System.Windows.Interop;

    using System.ServiceModel.Syndication;

    总结:

           做这个例子可能遇到的困难首先是引入命名空间问题,在什么情况下需要引入什么命名空间,这个我只是照着例子试试看。我想这个也没什么取巧的方法,只能靠积累,总结。

    还有一个可能只是对我来说是个困难,就是如何才能有一个漂亮的布局?以前做web我主要做逻辑,实体等部分,页面部分有别的人来做的。但这个SL主要还是用来显示的,所以我总觉得SL在我手上是被糟蹋的感觉。。。

  • 相关阅读:
    JavaScript模态对话框类
    事件模块的演变(1)
    html5中可通过document.head获取head元素
    How to search for just a specific file type in Visual Studio code?
    What do 'lazy' and 'greedy' mean in the context of regular expressions?
    正则非获取匹配 Lookahead and Lookbehind ZeroLength Assertions
    regex length 正则长度问题
    Inversion of Control vs Dependency Injection
    How to return View with QueryString in ASP.NET MVC 2?
    今天才发现Google Reader
  • 原文地址:https://www.cnblogs.com/yaoge/p/1822606.html
Copyright © 2011-2022 走看看