C#?WPF數(shù)據(jù)綁定模板化操作的完整步驟
前言:
WPF數(shù)據(jù)綁定對(duì)于WPF應(yīng)用程序來(lái)說(shuō)尤為重要,本文將講述使用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)
}
第二步:為每一個(gè)界面建立其模型類(lèi),如MainWindowVM,AzimuthWindowVM........,此種類(lèi)型的類(lèi)同樣需繼承自類(lèi)NotifyPropertyObject
注意:(1)此類(lèi)中主要添加后臺(tái)的實(shí)現(xiàn)代碼,其一是使后臺(tái)代碼盡可能簡(jiǎn)單;其二是便于數(shù)據(jù)的綁定
(2)此類(lèi)中大多數(shù)情況下寫(xiě)的是屬性和方法
示例:
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");
}
}
}
第三步:如果類(lèi)中存在與界面相關(guān)的量,則讓該類(lèi)繼承類(lèi)NotifyPropertyObject,并在派生類(lèi)中在屬性中的Set代碼塊中進(jìn)行綁定
public class Ellipsoid : NotifyPropertyObject
{
private double _a; //長(zhǎng)半軸
public double a
{
get => _a;
set
{
_a = value;
if (_a > 0 && _f > 0)
{
Init(a, f);
}
RaisePropertyChanged("a");
}
}
}
第四步:在界面設(shè)計(jì)代碼中進(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í)驗(yàn)證明該方法提高了程序的容錯(cuò)能力,以及程序數(shù)據(jù)結(jié)構(gòu)的健壯性。
總結(jié)
到此這篇關(guān)于C# WPF數(shù)據(jù)綁定模板化操作的文章就介紹到這了,更多相關(guān)C# WPF數(shù)據(jù)綁定模板化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# winfrom異步加載數(shù)據(jù)不影響窗體UI的操作方法
這篇文章主要介紹了C# winfrom 異步加載數(shù)據(jù)不影響窗體UI,在 WinForms 應(yīng)用程序中,如果數(shù)據(jù)加載是一個(gè)比較耗時(shí)的操作,直接在主線程中進(jìn)行加載會(huì)導(dǎo)致 UI 凍結(jié),這是因?yàn)?nbsp;WinForms 的 UI 是單線程的,主線程被阻塞時(shí)就無(wú)法處理其他 UI 相關(guān)的任務(wù)2024-12-12
C# 執(zhí)行CMD命令并接收返回結(jié)果的操作方式
這篇文章主要介紹了C# 執(zhí)行CMD命令并接收返回結(jié)果的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
C#利用FluentFTP實(shí)現(xiàn)FTP上傳下載功能詳解
FTP作為日常工作學(xué)習(xí)中,非常重要的一個(gè)文件傳輸存儲(chǔ)空間,想必大家都非常的熟悉了,那么如何快速的實(shí)現(xiàn)文件的上傳下載功能呢,本文以一個(gè)簡(jiǎn)單的小例子,簡(jiǎn)述如何通過(guò)FluentFTP實(shí)現(xiàn)文件的上傳和下載功能2023-02-02
Unity?UGUI的CanvasScaler畫(huà)布縮放器組件介紹使用
這篇文章主要為大家介紹了Unity?UGUI的CanvasScaler畫(huà)布縮放器組件介紹使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
利用C#與PLC通信實(shí)現(xiàn)設(shè)備遠(yuǎn)程控制與管理
PLC是工業(yè)自動(dòng)化中用于控制機(jī)械設(shè)備、生產(chǎn)線等的核心設(shè)備,通過(guò)與PLC的通信,我們可以實(shí)現(xiàn)設(shè)備的遠(yuǎn)程監(jiān)控、數(shù)據(jù)采集等功能,C#作為一種現(xiàn)代化的編程語(yǔ)言,能夠非常方便地與PLC進(jìn)行通信,本文將介紹如何利用C#與PLC進(jìn)行通信,并實(shí)現(xiàn)設(shè)備的遠(yuǎn)程控制與管理2025-02-02
C#實(shí)現(xiàn)計(jì)算兩個(gè)坐標(biāo)點(diǎn)直接距離的方法小結(jié)
這篇文章主要為大家詳細(xì)介紹了C#中幾種常見(jiàn)場(chǎng)景下兩個(gè)坐標(biāo)點(diǎn)直接距離的計(jì)算方法,文中的示例代碼講解詳細(xì),有需要的可以參考一下2024-04-04

