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


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

       在上一篇博文当中介绍了豆瓣应用程序的界面设计,那么这些界面是如何实现功能呢?下面我讲代码分享给大家。

        主页面图:

     

    大家可以看到主界面我们需要实现三种功能的搜索(搜书,搜乐,搜影)。由于这三种搜索的后台实现代码雷同,这里我以搜书为例。

    1) 首先我们需要实例化WebClient对象,这里由于三种类型的搜索调用WebClient对象方法基本上一致,所有我把这些封装到一个通用类当中(MyWebClient.cs)。MyWebClient.cs中代码如下:

    MyWebClient.cs
    WebClient client = new WebClient();


    public delegate bool MyWebClientDe(string xmlFile);

    MyWebClientDe _myDelegete;
    /// <summary>
    /// 回调函数设置获得返回的字符串
    /// </summary>
    ///
    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中添加如下代码:

     

    绑定书籍信息

     

        鼠标点击事件

     

    根据选择某一项进行跳转并传递id值。

    3) 在MainPage.xaml.cs中还需要调用:DoubanDAL.cs;DouBanBook.cs及Navigation.cs。

     

    4) 在DoubanDAL.cs中我们封装了搜索书籍,音乐,视频的通用属性信息搜索方法。代码如下:

    DoubanDAL.cs
    MyWebClient myclinet = new MyWebClient();

    public List<DouBanBook> GetBook(string xmlFile)
    {
    try
    {
    string ns1 = "{http://www.w3.org/2005/Atom}";
    var xml1
    = XDocument.Parse(xmlFile);
    var slist
    = from one in xml1.Descendants(ns1 + "entry")
    select
    new DouBanBook()
    {
    Titile
    = one.Element(ns1 + "title").Value,
    Images
    = (from cone in one.Elements(ns1 + "link")
    where cone.Attribute("rel").Value == "image"
    select cone.Attribute(
    "href").Value).First<string>(),
    Id
    = one.Element(ns1 + "id").Value
    };

    return slist.ToList<DouBanBook>();

    }
    catch
    {
    return null;
    }
    }

    public List<DouBanMusic> 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 one in xml1.Descendants(ns1 + "entry")
    select
    new DouBanMusic()
    {
    Titile
    = one.Element(ns1 + "title").Value,
    Images
    = (from cone in one.Elements(ns1 + "link")
    where cone.Attribute("rel").Value == "image"
    select cone.Attribute(
    "href").Value).First<string>(),
    Id
    = one.Element(ns1 + "id").Value
    };
    #endregion
    return slist.ToList<DouBanMusic>();
    }
    catch
    {
    return null;
    }
    }

    public List<DouBanVideo> GetVideo(string xmlFile)
    {
    try
    {
    #region 解析查询出来的xml文件
    string ns1 = "{http://www.w3.org/2005/Atom}";
    var xml1
    = XDocument.Parse(xmlFile);
    var slist
    = from one in xml1.Descendants(ns1 + "entry")
    select
    new DouBanVideo()
    {
    Titile
    = one.Element(ns1 + "title").Value,
    Images
    = (from cone in one.Elements(ns1 + "link")
    where cone.Attribute("rel").Value == "image"
    select cone.Attribute(
    "href").Value).First<string>(),
    Id
    = one.Element(ns1 + "id").Value
    };
    #endregion
    return slist.ToList<DouBanVideo>();
    }

    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;

    }
    }
    }

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

  • 相关阅读:
    autopoi升级到4.0版本修改方法
    JeecgBoot的前端Form升级为FormModel用法(支持 v-model 绑定)
    如何设计一张带二维码的打印报表?
    低代码概念报表-JimuReport1.1.09 版本发布
    分组报表怎么做,积木报表十分钟搞定!
    JeecgBoot 2.4.2 积木报表版本发布,基于SpringBoot的低代码平台
    低代码开发是如何解决企业招聘技术人才难题?
    JimuReport积木报表1.1.05 版本发布,免费的企业级 Web 报表工具
    Docker安装elasticsearch 7.7.0
    Jeecg 文件上传漏洞补丁说明
  • 原文地址:https://www.cnblogs.com/wzk89/p/2073931.html
Copyright © 2020-2023  润新知