WINDOWSPHONE STUDY1:创建一个 Windows Phone 7 下的简单 RSS 阅读器
在这篇文章中我们将为 Windows Phone 7 手机创建一个简单的 RSS (Really Simple Syndication) 阅读器。用户界面包含一个文本输入框用于输入 RSS 地址,以及一个 ListBox 用于显示 RSS 条目,如下图所示:
下载整个项目打包
项目是详细的步骤:
1. 创建新项目
首先我们要创建一个新项目,打开 Visual Studio 2010 -> File -> New Project -> 选择 Windows Phone Application ,如下图所示:
2. 为项目增加引用
接下来你需要增加对 Microsoft.Xml.Linq 这个 XML 解析库的应用,右击项目下的引用库,人然后选择添加引用,在 .NET 的 tab 页中你将找到 Microsoft.Xml.Linq, 点击 OK 按钮,如下图所示:
3. 修改标题
这个步骤不是必须的,但我还是决定加进来,在这个步骤中我们简单的修改 TitleGrid 元素用来指定应用程序的标题
1
|
< StackPanel x:Name = "TitlePanel" Grid.Row = "0" Margin = "24,24,0,12" >
|
2
|
< TextBlock x:Name = "ApplicationTitle" Text = "EUGENEDOTNET.COM" Margin = "0,0,0,0" Style = "{StaticResource PhoneTextNormalStyle}" />
|
3
|
< TextBlock x:Name = "PageTitle" Text = "RSS Reader" Margin = "-3,-8,0,0" Style = "{StaticResource PhoneTextTitle1Style}" />
|
4
|
</ StackPanel >
|
4. 修改 ContentGrid
ContentGrid 将包含应用程序中所需的 UI 元素,最基本的包括下面三项:
- TextBox 用于输入 RSS 网址
- Button 用于触发读取 RSS 信息的事件
- ListBox 用于显示 RSS 数据结果,包含标题和链接
需要注意的是按钮的点击事件是通过 XAML 中定义的,另外 Windows Phone 7 有一个新的 InputScope 特性用于简化输入框直接输入 URL 地址后响应回车键。
01
|
< Grid x:Name = "ContentGrid" Grid.Row = "1" >
|
02
|
|
03
|
< Grid.RowDefinitions >
|
04
|
< RowDefinition Height = "70" />
|
05
|
< RowDefinition Height = "Auto" />
|
06
|
</ Grid.RowDefinitions >
|
07
|
|
08
|
< TextBox Name = "tbRSSFeedURL" Grid.Row = "0" Text = "" Width = "350" Margin = "10,0,10,0" HorizontalAlignment = "Left" >
|
09
|
|
10
|
< TextBox.InputScope >
|
11
|
< InputScope >
|
12
|
< InputScopeName NameValue = "Url" />
|
13
|
</ InputScope >
|
14
|
</ TextBox.InputScope >
|
15
|
|
16
|
</ TextBox >
|
17
|
< Button Name = "btnReadFeed" Grid.Row = "0" Content = "Read" Width = "110" Margin = "10,0,10,0" HorizontalAlignment = "Right" Click = "btnReadFeed_Click" />
|
18
|
|
19
|
< ScrollViewer Width = "440" Height = "530" Grid.Row = "1" Margin = "10, 20, 0, 0" >
|
20
|
< ListBox Name = "listboxRSSFeedItems" Width = "440" Height = "530" >
|
21
|
|
22
|
< ListBox.ItemTemplate >
|
23
|
< DataTemplate >
|
24
|
< Grid >
|
25
|
< Grid.RowDefinitions >
|
26
|
< RowDefinition Height = "Auto" />
|
27
|
|
28
|
< RowDefinition Height = "Auto" />
|
29
|
</ Grid.RowDefinitions >
|
30
|
< TextBlock TextWrapping = "Wrap" Text = "{Binding Title}" Grid.Row = "0" FontSize = "24" HorizontalAlignment = "Left" />
|
31
|
|
32
|
< HyperlinkButton Content = "Link to details" NavigateUri = "{Binding Link}" HorizontalAlignment = "Left" Grid.Row = "1" Margin = "0,0,0,30" />
|
33
|
|
34
|
</ Grid >
|
35
|
</ DataTemplate >
|
36
|
</ ListBox.ItemTemplate >
|
37
|
</ ListBox >
|
38
|
</ ScrollViewer >
|
39
|
</ Grid >
|
5. 为 RSS 条目创建一个单独的类
现在我们只需要创建一个新的容器类用来保存 RSS 数据
1
|
public class RSSFeedItem
|
2
|
{
|
3
|
public string Title { get ; set ; }
|
4
|
public Uri URL { get ; set ; }
|
5
|
}
|
6. 实现事件功能
接下来我们需要为 Read 按钮编写事件处理程序,我们需要创建一个新的 URI 对象并传递给 ReadRss 方法
1
|
private void btnReadFeed_Click( object sender, RoutedEventArgs e)
|
2
|
{
|
3
|
if (! string .IsNullOrEmpty(tbRSSFeedURL.Text))
|
4
|
{
|
5
|
ReadRss( new Uri(tbRSSFeedURL.Text, UriKind.Absolute));
|
6
|
}
|
7
|
}
|
7. 实现应用程序逻辑
需要确保在 MainPage.xaml 类中使用如下应用语句:
1
|
using System.Xml.Linq; // for reading RSS using Linq-To-XML
|
2
|
using System.IO; // for Stream object
|
接下来你需要实现一个 ReadRss 方法,接收一个 URI 参数。如果请求成功的话,应用将处理返回的 RSS 信息并将每个条目放到 ListBox 中
01
|
public void ReadRss(Uri rssUri)
|
02
|
{
|
03
|
WebClient wclient = new WebClient();
|
04
|
|
05
|
wclient.OpenReadCompleted += (sender, e) =>
|
06
|
{
|
07
|
if (e.Error != null )
|
08
|
return ;
|
09
|
|
10
|
Stream str = e.Result;
|
11
|
XDocument xdoc = XDocument.Load(str);
|
12
|
|
13
|
// take 10 first results
|
14
|
List<RSSFeedItem> rssFeedItems = (from item in xdoc.Descendants( "item" )
|
15
|
select new RSSFeedItem()
|
16
|
{
|
17
|
Title = item.Element( "title" ).Value,
|
18
|
URL = new Uri(item.Element( "link" ).Value, UriKind.Absolute),
|
19
|
}).Take(10).ToList();
|
20
|
// close
|
21
|
str.Close();
|
22
|
|
23
|
// add results to listbox
|
24
|
listboxRSSFeedItems.Items.Clear();
|
25
|
rssFeedItems.ForEach(item => listboxRSSFeedItems.Items.Add(item));
|
26
|
};
|
27
|
wclient.OpenReadAsync(rssUri);
|
28
|
}
|
WINDOWSPHONE STUDY1:创建一个 Windows Phone 7 下的简单 RSS 阅读器相关推荐
- C#创建一个Windows Service
Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的.所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Window ...
- 创建一个Windows Service应用程序
创建一个Windows Service应用程序 下载本文代码 见资源 正是由于.NET Framework的出现,才使你能够构建出在系统重新启动时自动运行的.无人参与的(unattended)应用程序 ...
- 使用C++代码创建一个Windows桌面应用程序
下面六星教育整理使用C++代码创建一个Windows桌面应用程序,供大家学习参考. WinMain函数 Windows应用程序的唯一程序入口. 函数原型 int WINAPI WinMain { HI ...
- 利用c语言在屏幕上画出窗口,第一课:创建一个windows窗口
跟我一起学图形编程 作者:姚明联系方式: 欢迎使用我的图形学教程.我是计算机专业的学生,对图形图像技术有浓厚的兴趣,就读期间广泛的涉及相关知 ...
- 创建一个windows服务的小程序及注意事项
1,首先在vs中创建一个windows服务项目 会生成一个Service1.cs的文件 打开该文件 切换到代码视图 有两个方法 OnStart(string[] args)和OnStop()方 ...
- 创建一个JFrame,可下拉选择显示字符串和图片
创建一个JFrame,可下拉选择显示字符串和图片 import java.awt.*; import java.awt.event.*; import java.io.*; import javax. ...
- Windows Phone开发基础(11)实现一个RSS阅读器
实现一个RSS阅读器,通过你输入的RSS地址来获取RSS的信息列表和查看RSS文章中的详细内容.RSS阅读器是使用了WebClient类来获取网络上的RSS的信息,然后再转化为自己定义好的RSS实体类 ...
- Linux与Windows双系统下的Grub引导管理器安装。
转载自品略图书馆 http://www.pinlue.com/article/2020/04/0710/1410126301133.html 大多数人日常工作所用的系统是Windows,如果想尝试或者 ...
- 使用百度Clouda框架创建RSS阅读器应用
什么是Clouda? Clouda是百度的一款开源NodeJs轻应用框架,拥有百度强大的技术支持,实现快速开发.优化SEO.易部署等特性,提供简单易用的依赖管理模块化开发环境. 详细信息,请猛击Clo ...
最新文章
- linux centos7 设置 grub2
- retinaface onnx
- risc-v 操作系统教程
- 成功解决ValueError: setting an array element with a sequence.
- Synchronized结合Java Object对象中的 wait,notify,notifyAll
- c语言 error 9,C语言求助(_) c:9: error: syntax error before '[' token
- 服务器漏洞处理_wildfly禁用https和8443端口
- CSS基础「二」复合选择器 / 元素显示模式 / 背景 / 三大特性
- oracle concat和,concat和||之間是否存在性能差異?在oracle
- 选择排序两层遍历的目的
- 钢铁雄心II HOI2 作弊码合辑
- htcd816+android密码,详细的HTC Desire 816解锁教程
- javascript——构造函数和原型对象
- 软件测试语句覆盖,软件测试中的语句覆盖,分支覆盖,条件覆盖以及路径覆盖...
- python三维图形等高线_python等高线
- 几何公差基础知识之平面度
- jsp如何打开本地html文件怎么打开,jsp文件怎么打开,教您电脑怎么打开jsp文件
- android三星定位闪退,三星手机闪退问题7种修复方法
- P3437 [POI2006]TET-Tetris 3D
- 贪吃蛇大作战【C++游戏】