日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

WPF的binding

發布時間:2023/12/18 asp.net 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WPF的binding 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
深入淺出WPF之Binding的使用(一)

  在WPF中Binding可以比作數據的橋梁,橋梁的兩端分別是Binding的源(Source)和目標(Target)。一般情況下,Binding源是邏輯層對象,Binding目標是UI層的控件對象;這樣,數據就會通過Binding送達UI層,被UI層展現。

?  首先我們創建一個名為Student的類,這個類的實例作為數據源在UI上顯示:  

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

  Binding是一種自動機制,當值變化后屬性要有能力通知Binding,讓Binding把變化傳遞給UI元素。怎樣才能讓一個屬性具備這種通知Binding值已經變化的能力呢?方法是在屬性的set語句中激發一個PropertyChanged事件。這個事件不需要我們自己聲明,我們要做的是讓作為數據源的類實現System.ComponentModel名稱空間中的INotifyPropertyChanged接口。當為Binding設置了數據源后,Binding就會自動偵聽來自這個接口的PropertyChanged事件。  

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

  當Name屬性的值發生變化時PropertyChanged事件就會被激發,Binding接收到這個事件后發現事件的消息告訴它是名為Name的屬性發生了值得改變,于是就會通知Binding目標端的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#代碼:  

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

  其中:Binding binding=new Binding()聲明Binding類型變量并創建實例,然后使用binding.Source=student為Binding實例指定數據源,最后使用binding.Path = new PropertyPath("Name")為Binding指定訪問路徑。把數據源和目標連接在一起的任務是使用BindingOperations.SetBinding(this.Box,TextBox.TextProperty,binding)方法完成的。

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

  第一個參數主要是指定Binding的目標。

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

  第三個參數是指定那個Binding將數據源與目標關聯起來。

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

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

?

  Binding模型如下:

?

總結

以上是生活随笔為你收集整理的WPF的binding的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。