设为首页 收藏本站
查看: 1043|回复: 0

【Win8】-- 数据绑定&自定义转换

[复制链接]

尚未签到

发表于 2015-5-20 10:48:44 | 显示全部楼层 |阅读模式
  数据绑定(接口里面也可以定义事件)
1、
  (1)简单的绑定和wp7/wp8类似(这里不再写了,很相似的,请参考)
        随机生成5位数据的代码:



dog.Name=Guid.NewGuid().ToString().Substring(0,5);
  
  (2)选择模式
         将LictView中的对勾去掉:  单一:Single   多选:Multiple
  (3)IList objs=lv1.SelectedItems;    //对象为选中项的数据上下文
  (4)IsItemClickedEnabled



//首先设置 IsItemClickEnabled="True" ,启用ItemClick事件,然后监听ItemClick事件,e.ClickedItem为点击那一项的DataContext
Person p= e.ClickItem as Person;
MessageDialog mdialog = new MessageDialog(p.Name);
mdialog.ShowAsync(); //对话框显示的异步操作
  (5)在集合中添加元素(绑定到ListView中)
         需要用到 ObservableCollection 泛型,在Using System.Collections.ObjectModl 命名空间下,除了数据绑定以外,一般其他的集合用 List 就ok了,



// private List ls=new List();
ObservableCollection ls = new ObservableCollection();
  protected override void OnNavigatedTo(NavigationEventArgs e)
{
     if (e.NavigationMode== NavigationMode.New)
{
ls.Add("kefira");
ls.Add("kk");
lv.ItemsSource = ls; //数据绑定到ListView中时,显示数据只需要写出该行代码即可,但是也有人在xaml中修改ListView的属性为 ItemSource={Binding},
                             // 然后写入后台代码 lv.DataContent=ls;效果是一样的,意义也是一样的,多此一举而已嘛
     }
}
  private void Button_Click_1(object sender, RoutedEventArgs e)
{
ls.Add(DateTime.Now.Millisecond.ToString());
}
  运行结果如图:
DSC0000.png
2、自定义转换
      ComboBox -- 下拉列表框   PlipView -- 左右选择显示  以及 自定义转换
     转换器的一般命名规则:XX--XX转换器(例如UI到Model,BoolVisibilityConverter)
     示例:判断该国家是否是联合国,是的话显示联合国图片,不是则不显示
       定义一个CountryInfo类
  



using System.ComponentModel;
namespace _1自定义转换
{
public   class CountryInfo:INotifyPropertyChanged    //别忘了引入命名空间System.ComponentModel
{
private void FirePropertyChanged(string propName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}
private string _name;
public string Name
{
get { return _name; }
set { _name = value; FirePropertyChanged("Name"); }
}
private string _ImagePath;
public string ImagePath
{
get { return _ImagePath; }
set { _ImagePath = value; FirePropertyChanged("ImagePath"); }
}
private bool _isUnNum;  //判断是否是联合国成员
public bool IsUnNum
{
get { return _isUnNum; }
set { _isUnNum = value; FirePropertyChanged("IsUnNum"); }
}
public event PropertyChangedEventHandler PropertyChanged;
}
}
  
       设计MainPage.xaml界面:  (先把照片放到Image文件夹下)























  //在定义的时候IsNuNum是bool类                                                                                                                           型的,而在这里转换成了枚举类型            




      代码实现:
         



   protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (e.NavigationMode== NavigationMode.New)
{
List listCountry = new List ();
listCountry.Add(new CountryInfo { Name = "中国" , ImagePath="ms-appx:///Image/1.png" ,IsNuNum = true});
listCountry.Add(new CountryInfo { Name = "日本" , ImagePath="ms-appx:///Image/2.png" ,IsNuNum = false});
listCountry.Add(new CountryInfo { Name = "美国" , ImagePath="ms-appx:///Image/3.png" ,IsNuNum = true});
combCountry.ItemsSource = listCountry;  //Itemsource继承于ItemTemplate
            }           
}   
  马上运行了下,却发现 “日本” 也被判定成了是联合国的成员(因为联合国的图片4.png也显示了出来),这里,我们就必须要自定义转换了(这才是重点)。
     首先需要定义转换器的类BoolVisibilityConverter,转换器要实现IValueConverter接口




using Windows.UI.Xaml;
using Windows.UI.Xaml.Data;
namespace _1自定义转换.Common
{
public  class BoolVisibilityConverter : IValueConverter    //IvalueConverter的命名空间为Windows.UI.Xaml.Data;
    {
object IValueConverter.Convert(object value, Type targetType, object parameter, string language)
{
//这里的value是Model中的 数据,返回值是转换后UI中的数据
bool b = (bool)value;
return b ? Visibility.Visible : Visibility.Collapsed;
}
//如果数据绑定是TwoWay形式的,那么还需要实现该ConvertBack
object IValueConverter.ConvertBack(object value, Type targetType, object parameter, string language)
{
Visibility v = (Visibility)value;   //Visibility的命名空间为 Windows.UI.Xaml;
return v == Visibility.Visible;
}
}
}
########解释下:
   Convert方法用于把绑定模型的属性类型转换为被绑定UI元素的数据类型,value为转换前数据,把转换后数据以返回值形式返回。
   ConvertBack方法用于当TwoWay绑定的时候UI值发生变化方向修改Model属性值的时候做转换的。
  
  然后再转到MainPage.xaml中设计
          首先添加命名空间:  xmlns:common="using:_1自定义转换.Common"     //common是随意的命名
          然后定义资源:






  最后,在定义的 “联合国图片4.png” 的 Image 标签下的 Visibility 属性中再加上:Converter={StaticResource boolVisConverter}
  ok,自定义的转换完成,运行程序。如下图:(当底下图片转换到 “中国” 或 “美国” 时,联合国的照片显示;但底下图片是 “日本” 时,联合国的图片不显示)
DSC0001.png              DSC0002.png
  

  ---后记:这节是数据绑定和自定义转换的简单练习,依旧来自于传智播客视频的学习,分享给同样爱好win8的朋友们!@_@
   下篇文章将会写到动画和异步编程。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-68829-1-1.html 上篇帖子: (五)实例讲解win8(XAML+C#)开发--------课程表:Appbar,FilePicker,启动页面(动画) 下篇帖子: 消费者关注的 Win8 问题汇总(中)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表