天天看點

資料綁定(一)一個簡單的例子

原文: 資料綁定(一)一個簡單的例子

控件是用來展示資料的,而不是用來存儲資料的

如果把Binding比作資料的橋梁,那麼它的兩端分别是Binding的源(Source)和目标(Target),資料從哪裡來哪裡就是源,Binding就是加載中間的橋梁,Binding目标就是資料要到哪兒去,一般情況下,Binding源是邏輯層的對象,Binding目标是UI層的控件對象,這樣,資料就會源源不斷通過Binding送到UI層,也就完成了資料驅動UI的過程。

如果想讓作為Binding源的對象具有自動通知Binding自己屬性值已經變化的能力,就需要讓類實作INotifyPropertyChanged接口并在屬性的set語句中激發PropertyChanged事件。

一個簡單的Binding例子,首先定義一個Student類

class Student : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        private string m_Name;

        public string Name
        {
            get { return m_Name; }
            set
            {
                m_Name = value;
                if (PropertyChanged != null)
                {
                    PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Name"));
                }
            }
        }
    }      

界面上添加一個TextBox和一個Button

<TextBox x:Name="textBox1"></TextBox>
        <Button Content="Add age" Margin="5" Click="Button_Click"></Button>      

背景用C#代碼将Name屬性綁定到TextBox1上

Student stu = new Student();

            Binding binding = new Binding();
            binding.Source = stu;
            binding.Path = new PropertyPath("Name");

            BindingOperations.SetBinding(textBox1, TextBox.TextProperty, binding);      

這樣,當stu對象的Name屬性發生變化時,textBox1中的内容就可以自動發生變化了

哪個元素是希望通過binding送到UI的呢?這個屬性就稱為Binding的Path

繼續閱讀