码迷,mamicode.com
首页 > 其他好文 > 详细

WPF 数据绑定Bingding基础(第四天)

时间:2014-07-09 19:01:55      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   数据   

程序的本质是数据加算法。数据会在存储、逻辑和展示三个层面沟通,在WPF中,展示层和逻辑层的沟通就使用Data Bingding来实现。

Binding即“绑定”,如果把Bingding比作数据的桥梁,那么它的两端分别是Binding的源(Source)和目标(Target)。一般情况下,Binding源是逻辑层的对象,Binding目标是UI层的控件对象。这样数据就会源源不断的通过Bindin送达UI层、被UI层的展现,也就完成了数据驱动UI的过程。

下面通过一个简单的例子来讲明Binding的基本用法:

首先我们创建一个名为Student的类,在这个类的实例将作为数据源来使用。

class Student
    {
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
    }

这个类很简单只有一个Name属性。数据源看作一个对象,但是对象有很多的属性,它到底是把哪个属性通过Binding展示给UI呢?这个属性就称为Bingding的路径(Path)。但是光有属性还不行——Binding是一种自动机制,当值变化之后属性要有能力通知Binding值已经变化的能力,这个能力就是PropertyChanged事件,我们只需要在set语句中激发它就可以了。这个事件我们不需要自己声明,我们要做的是让作为数据源的类实现System.ComponentModel名称空间中的INotifyPropertyChanged接口。当为Binding设置了数据源后,Binding就会自动侦听来自这个接口的PropertyChanged事件。

实现了INotifyPropertyChanged接口的Student类看起来是这样:

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"));
                }
            }
        }
    }

这样当Name属性发生变化时PropertyChanged事件就会被激发,Binding接受到这个事件后就告诉UI发生相应的改变。

然后我们准备一个如图的UI界面

<Window x:Class="Bingding.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Simple Binding" Height="110" Width="300">
    <Grid>
        <StackPanel>
            <TextBox x:Name="textBoxName" BorderBrush="Black" Margin="5" />
            <Button Content="Add Age" Margin="5" Click="Button_Click"/>
        </StackPanel>
        
    </Grid>
</Window>
bubuko.com,布布扣

接下来我们将进行最重要的一步——使用Binding把数据源和UI元素连接起来,代码如下

namespace Bingding
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    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目标
            BindingOperations.SetBinding(this.textBoxName, TextBox.TextProperty, binding);

        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            stu.Name += "Name";
        }
    }
}

先准备数据源,然后准备Binding,把数据源和目标连接起来的任务是使用“BindingOperating.SetBinding(…)”方法完成的。

  • 第一个参数用于指定的目标,本例中为this.textBoxName。
  • 与数据源的path原理类似,第二个参数用于为Binding指明数据到达目标的哪个属性。
  • 第三个参数就是指定哪个Binding实例将数据与目标关联起来。

当点击Button时,Name变化,则TextBox里的值就变化。如图:

bubuko.com,布布扣

以上就是数据绑定Binding的基础。

*注:以上内容基本是本人在阅读《深入浅出WPF》时觉得重要的知识点,把它出来和大家一起共同学习,也以便自己在今后的日子回顾。详细知识请参阅书籍。

WPF 数据绑定Bingding基础(第四天),布布扣,bubuko.com

WPF 数据绑定Bingding基础(第四天)

标签:style   blog   http   color   使用   数据   

原文地址:http://www.cnblogs.com/laoqi/p/3831834.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!