Wpf的Binding

前言

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數據庫從入門到精通》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86846.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86846.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86846.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

嵌入式單片機中SPI串行外設接口控制與詳解

串行外設接口(Serial Peripheral Interface)的簡稱也叫做SPI,是一種高速的、全雙工同步通信的一種接口,串行外設接口一般是需要4根線來進行通信(NSS、MISO、MOSI、SCK),但是如果打算實現單向通信(最少3根線),就可以利用這種機制實現一對多或者一對一的通信。 第一:…

【世紀龍科技】新能源汽車動力電池總成裝調與檢修教學軟件

在新能源汽車產業“技術迭代快、安全要求高、實操風險大”的背景下&#xff0c;職業院校如何以“項目式教學改革”為突破口&#xff0c;破解傳統實訓“高成本、高風險、低效率”的困局&#xff1f;江蘇世紀龍科技以桌面VR沉浸式技術為支點&#xff0c;推出《新能源動力電池總成…

GO泛型編程面試題及參考答案

目錄 什么是 Go 中的泛型?Go 從哪個版本開始支持泛型? 在 Go 中如何定義一個帶類型參數的函數? 如何為結構體添加類型參數? 使用 any 關鍵字和自定義類型約束有什么區別? 泛型中~T 的語義及其實際應用是什么? 如何在函數中使用多個類型參數?舉例說明。 Go 泛型支…

ReactRouter-404路由配置以及兩種路由模式

404路由 場景&#xff1a;當瀏覽器輸入url的路徑在整個路由配置中都找不到對應的path&#xff0c;為了用戶體驗&#xff0c;可以使用404兜底組件進行渲染 實現步驟 準備一個404組件在路由表數組的末尾&#xff0c;以*號作為路由path配置路由 新建404組件 const NotFound (…

《Kubernetes》Service 詳解+Ingress

主要介紹kubernetes的流量負載組件&#xff1a;Service和Ingress。 1. Service 1.1 Service介紹 在kubernetes中&#xff0c;pod是應用程序的載體&#xff0c;我們可以通過pod的ip來訪問應用程序&#xff0c;但是pod的ip地址不是固定的&#xff0c;這也就意味著不方便直接采用…

常見網絡知識,寬帶、路由器

常見網絡知識&#xff0c;寬帶、路由器 1、關于光貓、橋接和路由接法 現在的光貓都帶有路由功能&#xff0c;即光貓、路由一體。不需要路由器也能讓設備連上&#xff0c;但是一般來說路由功能穿墻有限&#xff0c;放在弱電箱/多媒體箱里的光貓發射出來的wifi信號其實是很難在…

Android應用緩存清理利器:WorkManager深度實踐指南

本文將帶你全面掌握使用WorkManager實現緩存清理的技術方案&#xff0c;從基礎原理到性能優化&#xff0c;提供完整代碼實現和工程實踐指南 一、緩存清理的必要性與挑戰 在Android應用開發中&#xff0c;緩存管理是優化應用性能的關鍵環節。隨著應用使用時間增長&#xff0c;緩…

如何理解構件“可獨立部署”的特性

構件的“可獨立部署”特性是其區別于普通代碼模塊的核心特征之一&#xff0c;我們可以通過生活案例和技術原理解釋來理解這一特性&#xff1a; 一、生活類比&#xff1a;從“家電維修”看獨立部署 假設你家的空調壞了&#xff0c;維修時只需拆開空調外機更換壓縮機&#xff0…

uni-app subPackages 分包加載:優化應用性能的利器

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

CentOS 8 安裝第二個jdk隔離環境

1.適用于原本已經裝了jdk8&#xff0c;現在需要安裝jdk17&#xff1a; 多版本 JDK 共存不希望修改系統默認 JavaDocker 或腳本化部署 2. 下載 Adoptium&#xff08;原 AdoptOpenJDK&#xff09; 的 OpenJDK 17&#xff1a; cd /指定目錄 sudo wget https://github.com/adopti…

Day.43

getitem方法&#xff1a; class MyList: def __init__(self): self.data [10, 20, 30, 40, 50] def __getitem__(self, idx): return self.data[idx] my_list_obj MyList() print(my_list_obj[2]) len方法&#xff1a; class MyList: def __init__(self): self.data [10…

三七互娛GO面經及參考答案

MySQL 有哪些存儲引擎?MyISAM 如何存儲數字類型數據? MySQL 擁有多種存儲引擎,每種都有其獨特的特性和適用場景。常見的存儲引擎包括 InnoDB、MyISAM、Memory、CSV、Archive、Federated 等。 InnoDB 是 MySQL 5.5 版本之后的默認存儲引擎,它支持事務、外鍵、行級鎖和崩潰恢…

git常見問題匯總-重復提交/刪除已提交文件等問題

git常見問題匯總&#xff1a; 1&#xff0c;已經commit的文件需要修改 /刪除&#xff0c;應該怎么處理&#xff1f; 2&#xff0c;自己建的分支“branch1”顯示“rebasing branch1”&#xff0c;這是什么情況&#xff1f; 3&#xff0c;由于內容修改/優化&#xff0c;在同一個…

Python實例題:簡單的 Web 服務器

目錄 Python實例題 題目 要求&#xff1a; 解題思路&#xff1a; 代碼實現&#xff1a; Python實例題 題目 簡單的 Web 服務器 要求&#xff1a; 使用 Python 的 socket 模塊實現一個簡單的 HTTP 服務器。支持以下功能&#xff1a; 處理 GET 和 POST 請求靜態文件服務…

3.Stable Diffusion WebUI本地部署和實踐

本文看了(68 封私信) 逼真的圖片生產 | Stable Diffusion WebUI本地部署看這一篇就夠了 - 知乎和(68 封私信) Stable Diffusion WebUI 實踐: 基本技法及微調 - 知乎&#xff0c;本人根據它們部署了一遍&#xff0c;中間遇到一些報錯&#xff0c;但根據報錯提示解決了問題&#…

阿里最新開源:Mnn3dAvatar 3D數字人框架, 無需聯網,本地部署可離線運行,支持多模態實時交互

Mnn3dAvatar 3D數字人框架是基于阿里巴巴開源的輕量級深度學習推理框架MNN&#xff08;Mobile Neural Network&#xff09;開發的全新3D數字人框架。Aibot親測這是一個可以在本地運行、完全離線、支持多模態實時交互的智能數字人App。可以在本地私有部署。感興趣的同學可以拿來…

03【C++ 入門基礎】函數重載

文章目錄 引言函數重載函數重載的使用函數重載的原理extern “C” 靜態多態 總結 引言 通過00【C 入門基礎】前言得知&#xff0c;C是為了解決C語言在面對大型項目的局限而誕生&#xff1a; C語言面對的現實工程問題&#xff08;復雜性、可維護性、可擴展性、安全性&#xff0…

改寫一個小項目: flask -------------------> next js

現在&#xff0c;請把上面改寫代碼的過程中&#xff0c;所有的過程&#xff0c;都寫下來&#xff0c;寫為文章的形式&#xff0c;內容比較長&#xff0c;你可以分多次輸出。而且要求語言幽默&#xff0c;苦中作樂的心態。分條理&#xff0c;要清晰。一場從 Flask 到 Next.js 的…

線性相關和線性無關

在線性代數中&#xff0c;線性相關和線性無關是刻畫向量組性質的核心概念&#xff0c;以下是關于它們的重要結論總結&#xff1a; 一、基本定義與核心判定 線性相關的定義 向量組 { α 1 , α 2 , … , α m } \{\alpha_1, \alpha_2, \dots, \alpha_m\} {α1?,α2?,…,αm?…

非常有科技感的wpf GroupBox 控件

效果 樣式 <Style TargetType="GroupBox"><Setter Property="Margin" Value="10,5" /><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="GroupBox"><Grid>&l…