網(wǎng)站首頁 編程語言 正文
前言:
WPF數(shù)據(jù)綁定對于WPF應(yīng)用程序來說尤為重要,本文將講述使用MVVM模式進(jìn)行數(shù)據(jù)綁定的四步走用法:
具體實(shí)例代碼如下:
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(); //重點(diǎn) public MainWindow() { InitializeComponent(); this.DataContext = vm;//重點(diǎn) }
?第二步:為每一個界面建立其模型類,如MainWindowVM,AzimuthWindowVM........,此種類型的類同樣需繼承自類NotifyPropertyObject
?注意:(1)此類中主要添加后臺的實(shí)現(xiàn)代碼,其一是使后臺代碼盡可能簡單;其二是便于數(shù)據(jù)的綁定
? ? ? (2)此類中大多數(shù)情況下寫的是屬性和方法
?示例:
public class MainWindowVM : NotifyPropertyObject { private double _dmsL0; //中央子午線經(jīng)度 public double dmsL0 { get { return _dmsL0; } set { _dmsL0 = value; RaisePropertyChanged("dmsL0"); } } } public class AzimuthWindowVM : NotifyPropertyObject { private string azName = "A001->B004的坐標(biāo)方位角"; public string AzName { get { return azName; } set { azName = value; RaisePropertyChanged("AzName"); } } }
?第三步:如果類中存在與界面相關(guān)的量,則讓該類繼承類NotifyPropertyObject,并在派生類中在屬性中的Set代碼塊中進(jìn)行綁定?
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"); } } }
?第四步:在界面設(shè)計代碼中進(jìn)行綁定
示例:
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}" 注意:標(biāo)題也可綁定
經(jīng)以上四步走,WPF數(shù)據(jù)綁定工作已經(jīng)基本完成,實(shí)驗證明該方法提高了程序的容錯能力,以及程序數(shù)據(jù)結(jié)構(gòu)的健壯性。
總結(jié)
原文鏈接:https://www.cnblogs.com/fzyyds/p/15762649.html
相關(guān)推薦
- 2023-03-22 R語言基礎(chǔ)數(shù)據(jù)類型的具體使用_R語言
- 2023-04-08 python如何實(shí)現(xiàn)數(shù)組反轉(zhuǎn)_python
- 2022-09-15 圖文詳解在Anaconda安裝Pytorch的詳細(xì)步驟_python
- 2023-08-13 fastadmin框架怎么重定向至后臺模塊
- 2022-10-08 詳解pytest分布式執(zhí)行插件?pytest-xdist?的高級用法_python
- 2022-06-12 Android代碼檢查規(guī)則Lint的自定義與應(yīng)用詳解_Android
- 2023-03-28 Go實(shí)現(xiàn)set類型的示例代碼_Golang
- 2022-07-20 C語言深入刨析數(shù)據(jù)結(jié)構(gòu)之棧與鏈棧的設(shè)計與應(yīng)用_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支