博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Binding
阅读量:5265 次
发布时间:2019-06-14

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

1)数据源 

添加一个Student类:

(Binding是一种自动机制,当值变化后属性要有能力通知Binding,让Binding把变化传递给UI元素。方法是在属性set语句中激发一个PropertyChanged事件。这个事件不用我们声明,我们要做到的是让作为数据源的类实现System.ComponentModel名称空间中的INotifyPropertyChanged接口。当为Binding设置了数据源后,Binding就会自动监听来自这个接口的PropertyChanged事件。)

using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;namespace TestBinding{    class Student:INotifyPropertyChanged//实现这个接口,让Binding自动监听    {        public event PropertyChangedEventHandler PropertyChanged;        private string name;        public string Name        {            get { return name; }            set {                name = value;                //激发事件                if (this.PropertyChanged != null)                {                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Name"));                }            }        }    }}

或者:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Text;namespace TestBinding{    class Student:INotifyPropertyChanged//实现这个接口,让Binding自动监听    {        public event PropertyChangedEventHandler PropertyChanged;        private string name;        public string Name        {            get { return name; }            set {                name = value;                //激发事件                PropertyChangedEventHandler handler = PropertyChanged;                if (this.PropertyChanged != null)                {                    //this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Name"));                    handler(this, new PropertyChangedEventArgs("Name"));                }            }        }    }}

 

2)编写前台代码:

XAML:

 

3)使用Binding把数据源和UI元素连接起来

C#:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace TestBinding{    ///     /// MainWindow.xaml 的交互逻辑    ///     public partial class MainWindow : Window    {        Student stu;        public MainWindow()        {            InitializeComponent();            /*            //准备数据源            stu = new Student();            //准备Binding            Binding binding = new Binding();            binding.Source = stu;            binding.Path = new PropertyPath("Name");//为Binding指定访问路径            //使用Binding连接数据源与Binding目标            BindingOperations.SetBinding(textBoxName, TextBox.TextProperty, binding);            */            //以上三合一的做法:            this.textBoxName.SetBinding(TextBox.TextProperty, new Binding("Name") { Source = stu = new Student() });            //this.textBoxName.SetBinding(TextBox.TextProperty, new Binding() { Source = stu = new Student(),Path=new PropertyPath("Name") });        }        private void Button_Click(object sender, RoutedEventArgs e)        {            stu.Name += "Name";        }    }}

 

 

截图:

 

 

 

 

 

 

转载于:https://www.cnblogs.com/KeenLeung/p/3523438.html

你可能感兴趣的文章
HTML <select> 标签
查看>>
类加载机制
查看>>
tju 1782. The jackpot
查看>>
湖南多校对抗赛(2015.03.28) H SG Value
查看>>
hdu1255扫描线计算覆盖两次面积
查看>>
hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
查看>>
bzoj3224 splay板子
查看>>
程序存储问题
查看>>
Mac版OBS设置详解
查看>>
优雅地书写回调——Promise
查看>>
android主流开源库
查看>>
AX 2009 Grid控件下多选行
查看>>
PHP的配置
查看>>
Struts框架----进度1
查看>>
Round B APAC Test 2017
查看>>
MySQL 字符编码问题详细解释
查看>>
Ubuntu下面安装eclipse for c++
查看>>
让IE浏览器支持CSS3圆角属性的方法
查看>>
巡风源码阅读与分析---nascan.py
查看>>
LiveBinding应用 dataBind 数据绑定
查看>>