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è)界面建立其模型類,如MainWindowVM,AzimuthWindowVM........,此種類型的類同樣需繼承自類NotifyPropertyObject
注意:(1)此類中主要添加后臺(tái)的實(shí)現(xiàn)代碼,其一是使后臺(tái)代碼盡可能簡(jiǎn)單;其二是便于數(shù)據(jù)的綁定
(2)此類中大多數(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");
}
}
}
第三步:如果類中存在與界面相關(guān)的量,則讓該類繼承類NotifyPropertyObject,并在派生類中在屬性中的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#調(diào)用百度翻譯API實(shí)現(xiàn)一個(gè)翻譯功能
一直喜歡用Google Translate API進(jìn)行在線翻譯,但是服務(wù)越來(lái)越慢這篇文章,所以只能換一個(gè)了,主要給大家介紹了關(guān)于C#調(diào)用百度翻譯API實(shí)現(xiàn)一個(gè)翻譯功能的相關(guān)資料,需要的朋友可以參考下2021-06-06
C#實(shí)現(xiàn)多選項(xiàng)卡的瀏覽器控件
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)多選項(xiàng)卡的瀏覽器控件的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-03-03
Unity 如何通過(guò)反射給gameObject添加組件
這篇文章主要介紹了Unity 通過(guò)反射給gameObject添加組件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
c#動(dòng)態(tài)調(diào)用Webservice的兩種方法實(shí)例
這篇文章介紹了c#動(dòng)態(tài)調(diào)用Webservice的兩種方法實(shí)例,有需要的朋友可以參考一下2013-08-08
C#中System.IO.Pipelines庫(kù)的使用詳解
System.IO.Pipelines 是一個(gè)庫(kù),旨在使在 .NET 中執(zhí)行高性能 I/O 更加容易,本文主要為大家詳細(xì)介紹了System.IO.Pipelines具體使用方法,感興趣的可以了解下2023-12-12

