zoukankan      html  css  js  c++  java
  • windows phone中的数据绑定

    前几天写了一个绑定数据的小demo

    具体实现的内容是:

    1、在系统正式启动时实例化5个数据对象
    2、实现在页面上逐个操作显示数据  

    具体步骤如下:

    1、新建一个项目,添加一个公共类person,其中含有人的属性(一依据个人要求写啦,像姓名、电话什么的)
    2、在主页面的代码实现页面中实例化person类并初始化(直接new person,实例化了5个对象)
    3、实现上一张,下一张的代码(我用的是if…else…实现的,但要指出,if…else…有点浪费的感觉,可以使用switch实现一样的代码)
    4、在主页面中布局,使用画布控件,在画布控件中添加一个Image和几个TextBlock 
    5、添加实现翻页的按钮
    6、绑定画布控件的数据(用的是this.canvas1.DataContext = 实例化的类名)

    遇到的问题:

    在页面上逐个操作显示数据,开始我想的是将当前画布的类具体化为一个string,将5个实例化的类名都存储到一个string数组中,

    问题出现了1、将当前画布的类具体化为一个string,当前画布的类名是string不代表这就是一个string,用this.canvas1.DataContext读到的只是一个object类型的东西,我又实例化一个person类,将从canvas中读到的object赋值给新实例化的person然后读取名字,但是这个时候读到的仅仅是strinrg类型,虽然用的是if判断,且满足读取到的string与string数组中的string相等,用this.canvas1.DataContext=next时只是让canvas等于一个string而不是一个类,所以会出错

    分析好就解决问题,既然用this.canvas1.DataContext读取到的只是object类型,为什么我不直接声明为object类型的数组呢?果然声明为object类型的数组就好用多了,直接将object类型的元素赋值给this.canvas1.DataContext就OK,

    具体代码:

    实现点击下一页时的代码

    View Code
     1  object[] per = new object[5] { yiyi, hihi, lili, hehe, wang };
     2             object dangqian = this.canvas1.DataContext;
     3             object next;
     4             for (int i = 0; i < per.Length; i++)
     5             {
     6                 if (per[i] == dangqian)
     7                 {
     8                     if (i == 4)
     9                     {
    10                         this.canvas1.DataContext = yiyi;
    11                     }
    12                     else
    13                     {
    14                         next = per[i + 1];
    15                         this.canvas1.DataContext = next;
    16                     }
    17                 }
    18             }

    第二种种方法:

    先实例化canvas,将其内容读取,然后用switch进行划分和重新赋值,用switch比for效率高

    其中下一张的代码:

    View Code
     1  Person dangqian=new Person ();
     2             dangqian = (Person)this.canvas1.DataContext;
     3             string a=dangqian.Name;
     4            
     5             switch(a)
     6             {
     7                 case "yiyi":
     8                     this.canvas1.DataContext=hihi;
     9                     break;
    10                 case"hihi":
    11                     this.canvas1.DataContext = lili;
    12                     break;
    13                 case "lili":
    14                     this.canvas1.DataContext = hehe;
    15                     break;
    16                 case "hehe":
    17                     this.canvas1.DataContext = wang;
    18                     break;
    19                 case "wang":
    20                     this.canvas1.DataContext = yiyi;
    21                     break;
    22             }

     第三种方法:

    第三种方法,在方法外部声明一个实例化的当前类now然后依然用switch分支语句

    View Code
     1  switch (now.ID)
     2             {
     3                 case 1:
     4                     this.canvas1.DataContext = person3;
     5                     now.ID = now.ID + 2;
     6                     break;
     7                 case 2:
     8                     this.canvas1.DataContext = person1;
     9                     now.ID = now.ID -1;
    10                     break;
    11                 case 3:
    12                     this.canvas1.DataContext = person2;
    13                     now.ID = now.ID - 1;
    14                     break;
    15             }

    觉得不太理解的同学可以下载我的源码:http://download.csdn.net/detail/qinpei11/4806595

  • 相关阅读:
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 212 单词搜索 II
    Java实现 LeetCode 212 单词搜索 II
    Java实现 LeetCode 212 单词搜索 II
    Java实现 LeetCode 212 单词搜索 II
    Java实现 LeetCode 344 反转字符串
    Java实现 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
    Java实现 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
    Java实现 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
    Java实现 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
  • 原文地址:https://www.cnblogs.com/netqin/p/2777481.html
Copyright © 2011-2022 走看看