博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据绑定
阅读量:6598 次
发布时间:2019-06-24

本文共 2236 字,大约阅读时间需要 7 分钟。

OneTime绑定:单次绑定,绑定后数据改变界面不会发生改变 

 

OneWay绑定:单向绑定,这个是绑定的默认值,当我们改变数据源的值时,界面上面的值会发生改变,但当我们改名界面上面的值时,数据源数据不会发生变化(Eval)

 

TwoWay绑定:双向绑定,任意一方数据改变都会触发数据源或界面上面的值(BIND)

 

slider 进度滚动条

这个是最基本的一个绑定列子,下面我们看一看把一个对象的属性绑定到控件上面去

首先定义一个类Person

using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;using System.Threading.Tasks;namespace GridExp{    public class Person : INotifyPropertyChanged    {        private string _name;        private int _age;        public int Id { get; set; }        public string Name        {            get            {                return _name;            }            set            {                _name = value;                if (PropertyChanged != null)                {                    PropertyChanged(this, new PropertyChangedEventArgs("Name"));                }            }        }        public int Age        {            get            {                return _age;            }            set            {                _age = value;                if (PropertyChanged != null)                {                    PropertyChanged(this, new PropertyChangedEventArgs("Age"));                }            }        }        public event PropertyChangedEventHandler PropertyChanged;    }}

INotifyPropertyChanged接口规定了当属性更改时,向界面发送通知,这个事件时相对于Binding来说的,如果没有Binding,则不起任何作用

然后在前台定义3个控件

后台数据绑定

private Person p = new Person() { Name = "XXX", Age = 21 };        public GroupedItemsPage()        {            this.InitializeComponent();        }        protected override void OnNavigatedTo(NavigationEventArgs e)        {            bx.DataContext = p;        }        private void Button_Click_1(object sender, RoutedEventArgs e)        {            MessageDialog dlg = new MessageDialog(p.Name);            dlg.ShowAsync();        }        private void Button_Click_2(object sender, RoutedEventArgs e)        {            p.Name = DateTime.Now.Millisecond.ToString();        }

 这里需要提一下,就是内层控件会继承外层控件的数据源(数据上下文),也就是说,上面数据绑定的代码如果写成

protected override void OnNavigatedTo(NavigationEventArgs e)        {            this.DataContext = p;        }

也是可以的

 

转载于:https://www.cnblogs.com/zhuzhenyu/archive/2012/12/03/2799539.html

你可能感兴趣的文章
Airbnb如何简化1000多位工程师的Kubernetes工作流程?
查看>>
Scrum Master的成功定义是什么?
查看>>
Windows Server入门系列37 创建网络共享
查看>>
自己diy封装xp操作系统
查看>>
veritas升级及备份至磁盘两个问题简要说明
查看>>
Scoket:UDP通讯模型
查看>>
扯点关于经济的淡-贸易顺差都是有利的吗
查看>>
国产IT厂商激辩微软 微软反垄断调查或有突破
查看>>
《进化——我们在互联网上奋斗的故事》一一1.4 从精兵到强将 ——技术人员的职场发展之路...
查看>>
通过 LLVM 在 Android 上运行 Swift 代码
查看>>
《C程序员从校园到职场》一第2章 学校到职场2.1 认清自身不足
查看>>
ant打jar包
查看>>
CISCO交换机密码恢复
查看>>
Linux/Unix的精巧约定两例及其简析:目录权限和文本行数
查看>>
WebDAV助手1.1.0更新
查看>>
微服务事务处理
查看>>
【linux】 linux gpio操作
查看>>
【linux kernel】 softirq 软中断讨论
查看>>
2019武汉大学数学专业考研真题(回忆版)
查看>>
百度地图车辆运动轨迹
查看>>