網站首頁 編程語言 正文
前言:
WPF數據綁定對于WPF應用程序來說尤為重要,本文將講述使用MVVM模式進行數據綁定的四步走用法:
具體實例代碼如下:
public class NotifyPropertyObject : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public void RaisePropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } } private MainWindowVM vm = new MainWindowVM(); //重點 public MainWindow() { InitializeComponent(); this.DataContext = vm;//重點 }
?第二步:為每一個界面建立其模型類,如MainWindowVM,AzimuthWindowVM........,此種類型的類同樣需繼承自類NotifyPropertyObject
?注意:(1)此類中主要添加后臺的實現代碼,其一是使后臺代碼盡可能簡單;其二是便于數據的綁定
? ? ? (2)此類中大多數情況下寫的是屬性和方法
?示例:
public class MainWindowVM : NotifyPropertyObject { private double _dmsL0; //中央子午線經度 public double dmsL0 { get { return _dmsL0; } set { _dmsL0 = value; RaisePropertyChanged("dmsL0"); } } } public class AzimuthWindowVM : NotifyPropertyObject { private string azName = "A001->B004的坐標方位角"; public string AzName { get { return azName; } set { azName = value; RaisePropertyChanged("AzName"); } } }
?第三步:如果類中存在與界面相關的量,則讓該類繼承類NotifyPropertyObject,并在派生類中在屬性中的Set代碼塊中進行綁定?
public class Ellipsoid : NotifyPropertyObject { private double _a; //長半軸 public double a { get => _a; set { _a = value; if (_a > 0 && _f > 0) { Init(a, f); } RaisePropertyChanged("a"); } } }
?第四步:在界面設計代碼中進行綁定
示例:
1、<TextBox Grid.Column="2" VerticalAlignment="Center" Text="{Binding CurrentEllipsoid.a}" IsEnabled="{Binding CurrentEllipsoid.IsCustomEllopsoid}"/> 2、<ComboBox VerticalAlignment="Center" ItemsSource="{Binding EllipsoidList}" SelectedItem="{Binding CurrentEllipsoid}"/> 3、Title="{Binding Title}" 注意:標題也可綁定
經以上四步走,WPF數據綁定工作已經基本完成,實驗證明該方法提高了程序的容錯能力,以及程序數據結構的健壯性。
總結
原文鏈接:https://www.cnblogs.com/fzyyds/p/15762649.html
相關推薦
- 2022-11-16 詳解C++中的左值,純右值和將亡值_C 語言
- 2022-10-04 一文教會你用Python讀取PDF文件_python
- 2024-01-14 “xxx“ is not an enclosing class 解決辦法
- 2022-05-16 通過T-SQL語句創建游標與實現數據庫加解密功能_MsSql
- 2022-11-11 C++?左值引用與一級指針示例詳解_C 語言
- 2022-10-28 Django執行python?manage.py?makemigrations報錯的解決方案分享_p
- 2023-08-16 uniapp頁面返回到上一個頁面,更新其數據
- 2022-07-24 Nginx靜態壓縮和代碼壓縮提高訪問速度詳解_nginx
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支