• 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在我手上是被糟蹋的感觉。。。

  • 相关阅读:
    qt自定义的串口类判断断开
    ubuntu16.04永久修改有线接口名称(enp0s3->eth0)
    记录一下读过的书
    Qt 主界面卡死
    Mysql5.7及版本以上导入sql提示Incorrect date value: '0000-00-00' for column
    webpack打包css
    ant-design-vue中的a-directory-tree更换图标
    解决php-fpm占用内存过高问题
    centos,解压源代码安装,没有configure文件
    OSS存储上遇到The difference between the request time and the current time is too large
  • 原文地址:https://www.cnblogs.com/yaoge/p/1822606.html
Copyright © 2020-2023  润新知