WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现

WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
在上一篇博文当中介绍了豆瓣应用程序的界面设计,那么这些界面是如何实现功能呢?下面我讲代码分享给大家。
主页面图:
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
大家可以看到主界面我们需要实现三种功能的搜索(搜书,搜乐,搜影)。由于这三种搜索的后台实现代码雷同,这里我以搜书为例。
1) 首先我们需要实例化WebClient对象,这里由于三种类型的搜索调用WebClient对象方法基本上一致,所有我把这些封装到一个通用类当中(MyWebClient.cs)。MyWebClient.cs中代码如下:
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现MyWebClient.cs WebClient client = new WebClient(); public delegate bool MyWebClientDe(string xmlFile); MyWebClientDe _myDelegete; /// /// 回调函数设置获得返回的字符串 /// /// public bool IsBusy() { return client.IsBusy; } public MyWebClientDe myDelegete { get { return _myDelegete; } set { _myDelegete = value; } } public MyWebClient() { client.Encoding = Encoding.UTF8; client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted); } void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { if (myDelegete != null) { if (e.Error == null) { myDelegete(e.Result); } else { MessageBox.Show(e.Error.Message.ToString()); } } else MessageBox.Show("未指定代理函数!"); } public bool DownloadStringAsync(string Api) { try { if (!client.IsBusy) { client.DownloadStringAsync(new Uri(Api)); return true; } else { return false; } } catch { return false; } }

2) 随后我们需要在MainPage.xaml.cs中添加如下代码:
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
绑定书籍信息
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
鼠标点击事件
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
根据选择某一项进行跳转并传递id值。
3) 在MainPage.xaml.cs中还需要调用:DoubanDAL.cs;DouBanBook.cs及Navigation.cs。
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
4) 在DoubanDAL.cs中我们封装了搜索书籍,音乐,视频的通用属性信息搜索方法。代码如下:
DoubanDAL.cs MyWebClient myclinet = new MyWebClient(); public List GetBook(string xmlFile) { try { string ns1 = "{http://www.w3.org/2005/Atom}"; var xml1 = XDocument.Parse(xmlFile); var slist = from _disibledevent=>in xml1.Descendants(ns1 + "entry") select new DouBanBook() { Titile = _disibledevent=>+ "title").Value, Images = (from cone in _disibledevent=>+ "link") where cone.Attribute("rel").Value == "image" select cone.Attribute("href").Value).First(), Id = _disibledevent=>+ "id").Value }; return slist.ToList(); } catch { return null; } } public List GetMusic(string xmlFile) { try { #region 解析查询出来的xml文件 string ns1 = "{http://www.w3.org/2005/Atom}"; var xml1 = XDocument.Parse(xmlFile); //MessageBox.Show(xml1.ToString()); var slist = from _disibledevent=>in xml1.Descendants(ns1 + "entry") select new DouBanMusic() { Titile = _disibledevent=>+ "title").Value, Images = (from cone in _disibledevent=>+ "link") where cone.Attribute("rel").Value == "image" select cone.Attribute("href").Value).First(), Id = _disibledevent=>+ "id").Value }; #endregion return slist.ToList(); } catch { return null; } } public List GetVideo(string xmlFile) { try { #region 解析查询出来的xml文件 string ns1 = "{http://www.w3.org/2005/Atom}"; var xml1 = XDocument.Parse(xmlFile); var slist = from _disibledevent=>in xml1.Descendants(ns1 + "entry") select new DouBanVideo() { Titile = _disibledevent=>+ "title").Value, Images = (from cone in _disibledevent=>+ "link") where cone.Attribute("rel").Value == "image" select cone.Attribute("href").Value).First(), Id = _disibledevent=>+ "id").Value }; #endregion return slist.ToList(); } catch { return null; } }

5) 在DouBanBook.cs中封装了我们需要查询的一些书籍信息的属性。代码如下:
DouBanBook.cs //图片路径 public string Images { get; set; } //标题 public string Titile { get; set; } //ID public string Id { get; set; } //作者 public string author { get; set; } //简介 public string suammary { get; set; } //价格 public string price { get; set; } //出版人 public string publisher { get; set; } public string authorInfo { get; set; }

6) 在Navigation.cs中我们利用枚举实现页面跳转。代码如下:
Navigation.cs public enum ApplicationPages { Book, Music, Video } public static class Navigation { public static void GoToPage(this PhoneApplicationPage phoneApplicationPage, ApplicationPages applicationPage,string Id) { switch (applicationPage) { case ApplicationPages.Book: phoneApplicationPage.NavigationService.Navigate(new Uri("/Views/BookPage.xaml?id="+Id ,UriKind.Relative)); break; case ApplicationPages.Music: phoneApplicationPage.NavigationService.Navigate(new Uri("/Views/MusicPage.xaml?id=" + Id, UriKind.Relative)); break; case ApplicationPages.Video: phoneApplicationPage.NavigationService.Navigate(new Uri("/Views/VideoPage.xaml?id=" + Id, UriKind.Relative)); break; } } }

这样我们就实现了主页面的搜索及跳转功能。
Tags: 

延伸阅读

最新评论

发表评论