前言
wpf的Binding就像一個橋梁,它的作用就是連接邏輯層與界面層,既能夠把邏輯層的數據搬到界面層展示,又能將界面層的數據更改后傳遞到邏輯層,Binding的數據來源就是Binding的源,數據展示的地方就是Binding的目標。
1、新建一個類
下面的代碼中新建了一個Student類,該類有一個簡單的屬性Name, 并且該類實現了INotifyPropertyChanged接口,實現該接口的目的是當Name屬性的Set方法被觸發以后通過PropertyChanged事件就能通知Binding,Name屬性值已發生更改,從而通知Binding的目標更新界面,該類的對象可以作為Binding的源。
class Student: INotifyPropertyChanged{public event PropertyChangedEventHandler PropertyChanged;private string name;public string Name{get{return name;}set{name = value;if(this.PropertyChanged !=null){PropertyChanged.Invoke(this,new PropertyChangedEventArgs("Name"));}}}}
2、準備界面
容器StackPanel中放了一個Button一個TextBox,并且給Button注冊了一個事件btn_Test_Click,每次點擊Button就會把Student類的對象的Name值+10,這個對象就是Binding的源,這樣就相當于利用Button去改變Binding源的值。
<Window x:Class="WpfApp1.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WpfApp1"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><StackPanel><Button x:Name="btn_Test" Height="20" Click="btn_Test_Click"/><TextBox x:Name="tbx_test" Height="20"/></StackPanel>
</Window>
private void btn_Test_Click(object sender, RoutedEventArgs e){student.Name += "10";}
3、準備數據源、Binding、簡歷源和目標的連接
下面代碼中首先通過new一個Student類的對象建立了一個Binding源;然后聲明一個Binding類的對象,指定Binding對象源是student對象,并且指定Binding的Path也就是源中的屬性是Name(對應student的Name屬性);最后使用BindingOperations.SetBinding方法建立源和目標之間的關聯,該方法第一個參數是目標對象,這里對應tbx_test,第二個參數是目標的屬性,這里是對應 TextBox屬性,第三個參數是Binding對象,這樣就建立了源(Student的Name屬性)、目標(tbx_test的Text屬性)
Student student;public MainWindow(){InitializeComponent();student = new Student();//準備數據源Binding binding = new Binding();//聲明Binding對象binding.Source = student;//指定Binding的源binding.Path = new PropertyPath("Name"); //指定Binding的路徑,也就是源的哪個屬性BindingOperations.SetBinding(this.tbx_test, TextBox.TextProperty, binding);//分別指定Binding的目標對象、目標對象的哪個屬性,Binding對象//tbx_test.SetBinding(TextBox.TextProperty ,new Binding ("Name"){ Source=student });}
4、運行結果
點擊一次按鈕,tbx_test就會增加“10”
馬工撰寫的年入30萬+C#上位機項目實戰必備教程(點擊下方鏈接即可訪問文章目錄)
1、《C#串口通信從入門到精通》
2、《C#與PLC通信從入門到精通 》
3、《C# Modbus通信從入門到精通》
4、《C#Socket通信從入門到精通 》
5、《C# MES通信從入門到精通》
6、《winform控件從入門到精通》
7、《C#操作MySql數據庫從入門到精通》