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

WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
   在上一篇博文当中介绍了豆瓣应用程序的界面设计,那么这些界面是如何实现功能呢?下面我讲代码分享给大家。
    主页面图:
 WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
大家可以看到主界面我们需要实现三种功能的搜索(搜书,搜乐,搜影)。由于这三种搜索的后台实现代码雷同,这里我以搜书为例。
1) 首先我们需要实例化WebClient对象,这里由于三种类型的搜索调用WebClient对象方法基本上一致,所有我把这些封装到一个通用类当中(MyWebClient.cs)。MyWebClient.cs中代码如下:
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现 WebClient client = new WebClient();
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现

WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                public delegate bool MyWebClientDe(string xmlFile);
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
                MyWebClientDe _myDelegete;
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                /// <summary>
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                /// 回调函数设置获得返回的字符串
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                /// </summary>
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                /// 
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                public bool IsBusy()
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        return client.IsBusy;
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                public MyWebClientDe myDelegete
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        get { return _myDelegete; }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        set { _myDelegete = value; }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
                public MyWebClient()
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        client.Encoding = Encoding.UTF8;
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
                        client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
                }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
                void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        if (myDelegete != null)
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                if (e.Error == null)
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                        myDelegete(e.Result);
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                else
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                        MessageBox.Show(e.Error.Message.ToString());
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        else
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                MessageBox.Show("未指定代理函数!");
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
                }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
                public bool DownloadStringAsync(string Api)
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                     
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        try
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                if (!client.IsBusy)
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                        client.DownloadStringAsync(new Uri(Api));
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
                                        return true;
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                else
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                        return false;
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        catch
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                return false;
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现

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


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

WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                var slist = from one in xml1.Descendants(ns1 + "entry")
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                        select new DouBanMusic()
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                        {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                                Titile = one.Element(ns1 + "title").Value,
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                                Images = (from cone in one.Elements(ns1 + "link")
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                                                    where cone.Attribute("rel").Value == "image"
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                                                    select cone.Attribute("href").Value).First<string>(),
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                                Id = one.Element(ns1 + "id").Value
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                        };
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                #endregion
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                return slist.ToList<DouBanMusic>();
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        catch 
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                return null;
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
                public List<DouBanVideo> GetVideo(string xmlFile)
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        try
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现解析查询出来的xml文件#region 解析查询出来的xml文件
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                string ns1 = "{http://www.w3.org/2005/Atom}";
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                var xml1 = XDocument.Parse(xmlFile);
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                var slist = from one in xml1.Descendants(ns1 + "entry")
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                        select new DouBanVideo()
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                        {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                                Titile = one.Element(ns1 + "title").Value,
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                                Images = (from cone in one.Elements(ns1 + "link")
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                                                    where cone.Attribute("rel").Value == "image"
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                                                    select cone.Attribute("href").Value).First<string>(),
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                                Id = one.Element(ns1 + "id").Value
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                                        };
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                #endregion
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                             return    slist.ToList<DouBanVideo>();
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
                        catch
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        {
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                                return null;
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                        }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                }


5) 在DouBanBook.cs中封装了我们需要查询的一些书籍信息的属性。代码如下:
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现//图片路径
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                public string Images { get; set; }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                //标题
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                public string Titile { get; set; }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                //ID
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                public string Id { get; set; }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                //作者
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                public string author { get; set; }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                //简介
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                public string suammary { get; set; }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                //价格
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                public string price { get; set; }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                //出版人
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现                public string publisher { get; set; }
WindowsPhone7开发简单豆瓣网应用程序之主页面功能实现
                public string authorInfo { get; set; }


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


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




 本文转自 王祖康 51CTO博客,原文链接:http://blog.51cto.com/wzk89/582045,如需转载请自行联系原作者
上一篇:C#常见金额优选类型及其三种常用的取整方式


下一篇:常见Android Native崩溃及错误原因