久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

深入淺出WPF之Binding的使用(一)

 zp_0409 2019-04-16

from:   http://www.cnblogs.com/akwwl/p/3421005.html

在WPF中Binding可以比作數(shù)據(jù)的橋梁,橋梁的兩端分別是Binding的源(Source)和目標(biāo)(Target),。

一般情況下,,Binding源是邏輯層對象,Binding目標(biāo)是UI層的控件對象,;這樣,數(shù)據(jù)就會通過Binding送達UI層,,被UI層展現(xiàn),。

   首先我們創(chuàng)建一個名為Student的類,這個類的實例作為數(shù)據(jù)源在UI上顯示:  

復(fù)制代碼
public class Student { private string name; public string Name { set { name = value; } get { return name; } } }
復(fù)制代碼

  Binding是一種自動機制,,當(dāng)值變化后屬性要有能力通知Binding,,讓Binding把變化傳遞給UI元素。

怎樣才能讓一個屬性具備這種通知Binding值已經(jīng)變化的能力呢,?方法是在屬性的set語句中激發(fā)一個PropertyChanged事件,。這個事件不需要我們自己聲明,我們要做的是讓作為數(shù)據(jù)源的類實現(xiàn)System.ComponentModel名稱空間中的INotifyPropertyChanged接口,。當(dāng)為Binding設(shè)置了數(shù)據(jù)源后,,Binding就會自動偵聽來自這個接口的PropertyChanged事件?! ?/span>

復(fù)制代碼
    public class Student:INotifyPropertyChanged    {        private string name;        public string Name        {            set             {                 name = value;                NotifyPropertyChanged('Name');            }            get { return name; }        }        public event PropertyChangedEventHandler PropertyChanged;        private void NotifyPropertyChanged(string propertyName)        {            if (PropertyChanged != null)            {                PropertyChanged(this,new PropertyChangedEventArgs(propertyName));            }        }    }
復(fù)制代碼

  當(dāng)Name屬性的值發(fā)生變化時PropertyChanged事件就會被激發(fā),,Binding接收到這個事件后發(fā)現(xiàn)事件的消息告訴它是名為Name的屬性發(fā)生了值得改變,于是就會通知Binding目標(biāo)端的UI元素顯示新的值,。

  XAML代碼:  

<Grid> <TextBox x:Name='Box' HorizontalAlignment='Left' VerticalAlignment='Top' Margin='100,50,0,0' Height='30' Width='200'/> <Button Content='按鈕' HorizontalAlignment='Left' VerticalAlignment='Top' Margin='120,150,0,0' Height='30' Width='160' Click='Button_Click'/> </Grid>

  C#代碼:  

復(fù)制代碼
public partial class MainWindow : Window    {        private Student student;        public MainWindow()        {            InitializeComponent();            student = new Student();            Binding binding = new Binding();            binding.Source = student;            binding.Path = new PropertyPath('Name');            BindingOperations.SetBinding(this.Box,TextBox.TextProperty,binding);        }        private void Button_Click(object sender, RoutedEventArgs e)        {            student.Name = DateTime.Now.ToString('yyyy-MM-dd hh:mm:ss');        }    }
復(fù)制代碼

  其中:Binding binding=new Binding()聲明Binding類型變量并創(chuàng)建實例,,

然后使用binding.Source=student為Binding實例指定數(shù)據(jù)源,

最后使用binding.Path = new PropertyPath('Name')為Binding指定訪問路徑,。

把數(shù)據(jù)源和目標(biāo)連接在一起的任務(wù)是使用BindingOperations.SetBinding(this.Box,TextBox.TextProperty,binding)方法完成的,。

  BindingOperations.SetBinding(this.Box,    TextBox.TextProperty,    binding)中的參數(shù)介紹:

  第一個參數(shù)主要是指定Binding的目標(biāo)。

  第二個參數(shù)是用于為Binding指明將數(shù)據(jù)綁定到目標(biāo)的那個屬性中去,,一般都為目標(biāo)的依賴屬性,。

  第三個參數(shù)是指定那個Binding將數(shù)據(jù)源與目標(biāo)關(guān)聯(lián)起來,。

  上面的代碼還可以簡化如下:

private void SetBinding() { student = new Student(); this.Box.SetBinding(TextBox.TextProperty, new Binding('Name') { Source=student}); }

  Binding模型如下:



    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多