关闭

WPF中的Binding(一)

825人阅读 评论(2) 收藏 举报
分类:
Binding,顾名思义,即为绑定。在WPF中被封装成一个类,其相当于数据的桥梁,两端分别是Binding的源和目标。
下面用一个简单的例子来说明Binding的用法。
首先,新建一个名为Student的类,作为数据源
<pre name="code" class="csharp">class Student
{
	private string name;
	public string Name
	{
		get{return name;}
		set{name=value;}
	}
}






Binding是一种自动机制,当值变化后属性要有能力通知Binding,让Binding把变化传递给UI元素。要是属性具有这种通知变化的能力,方法
是在属性set语句中激发一个PeopertyChanged事件。这个事件不需要我们声明,我们要做的是让类继承System.ComponentModel命名空间的
INotifyPropertyChanged接口,这样当Name属性的值发生变化时,PropertyChanged事件就会被激发

class Student:INotifyPropertyChanged
    {
        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"));
                }
            }
        }
    }



然后,在UI上新建一个TextBox,Name为textBox,我们通过下面的代码将一个Student对象绑定到TextBox上,这样在TextBox就可以显示学生名字


public MainWindow()
        {
            InitializeComponent();
            //准备数据源
            Student stu=new Student();
            //准备Binding
            Binding binding=new Binding();
            binding.Source=stu;
            binding.Path=new PropertyPath("Name");
            
            //使用Binding连接数据源与Binding目标
            BindingOperations.SetBinding(this.textBox,TextBox.TextProperty,binding);
        }


一般情况下,很多控件比如TextBox都把BindingOperations.SetBinding进行了封装,封装成了诸如TextBox.SetBinding等形式的成员函数
上面的
BindingOperations.SetBinding(this.textBox,TextBox.TextProperty,binding);
也可换成
textBox.SetBinding(TextBox.TextProperty,binding);
0
0
查看评论

WPF中的Binding

Binding基础 Binding在韩语中时绑定,实际上引文中动词Bind在转化为名词Binding后,除了原有的绑定的意思外,还引申除了“关联”和“建联”的含义。也就是说Binding更注重表达它是一种像桥梁一样的关联关系。WPF中,正式在这段桥梁上我们有机会为往来流通的数据做很多事情。 如果把B...
  • Eric_K1m
  • Eric_K1m
  • 2013-11-25 14:12
  • 1640

WPF之Binding深入探讨

转载于:http://blog.csdn.net/fwj380891124/article/details/8107646 1,Data Binding在WPF中的地位 程序的本质是数据+算法。数据会在存储、逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要...
  • JackyGuo77
  • JackyGuo77
  • 2015-08-19 08:21
  • 1227

C#WPF Binding 中的Path什么意思

C#WPF Binding 中的Path什么意思 举例说明
  • wyx100
  • wyx100
  • 2015-02-03 22:36
  • 2351

WPF 中Binding的2个属性Source与ElementName的区别

原文出处:http://www.im47.cn/?p=482 ElementName The ElementName property is used to reference an object by the name of the object. This is particularly...
  • Metal1
  • Metal1
  • 2014-12-15 16:06
  • 2494

WPF Data Binding之数据的转换和校验【四】

Binding的作用就是架在Source和Target之间的桥梁,数据可以在这座桥梁的帮助下来流通。就像现实社会中桥梁需要设置安检和关卡一样,Binding这座桥上也可以设置关卡对数据进行验证,不仅如此,如果Binding两端需要不同的数据类型的时候我们还可以为数据设置转换器。   &...
  • aoshilang2249
  • aoshilang2249
  • 2015-04-04 16:49
  • 1717

WPF之Binding基础四 使用DataContext作为Binding的源

在WPF里面,FrameworkElement是WPF控件的基类,而DataContext属性就被定义在这个类里面,所以说所有的WPF控件都有这个属性。WPF的UI是树状的,每个节点都是控件,所以每个节点都有DataContext属性。如果一个Binding找不到自己的Source那他就会沿着这个U...
  • dyllove98
  • dyllove98
  • 2013-06-17 21:21
  • 4550

wpf 后台绑定数据 binding

http://blog.csdn.net/h82258652/article/details/20577209点击打开链接
  • czf2505
  • czf2505
  • 2014-05-26 14:28
  • 668

WPF在XAML中Binding使用StringFormat属性

1. 绑定Currency, 如果没有字符的话, =后面需要先加入{}. 不加的话会出问题 2. 绑定Currency,并在前面加入一些字符. 跟上面相比, 没有{} 3. 绑定日期 4. 绑定时间 5. 多重绑定 6. 多重绑定中的特殊字...
  • jumtre
  • jumtre
  • 2014-03-06 14:23
  • 13639

[WPF] Binding Enum to ComboBox

 方法一:在Resources中定义ObjectDataProvider,如:                对Combo设定:  方法二:...
  • alvachien
  • alvachien
  • 2010-04-28 16:09
  • 2331

WPF入门系列教程(二) 深入剖析WPF Binding的使用方法

同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProperty)只能拥有一个binding。 这一点可以通过设置binding对象的方法名得知: public static BindingExpressi...
  • StudyBao
  • StudyBao
  • 2013-02-21 14:31
  • 774
    个人资料
    • 访问:513686次
    • 积分:7975
    • 等级:
    • 排名:第3115名
    • 原创:303篇
    • 转载:17篇
    • 译文:1篇
    • 评论:72条
    其它平台
    博客专栏