C#?WPF數(shù)據(jù)綁定模板化操作的完整步驟
前言:
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í)驗(yàn)證明該方法提高了程序的容錯能力,以及程序數(shù)據(jù)結(jié)構(gòu)的健壯性。
總結(jié)
到此這篇關(guān)于C# WPF數(shù)據(jù)綁定模板化操作的文章就介紹到這了,更多相關(guān)C# WPF數(shù)據(jù)綁定模板化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#調(diào)用百度翻譯API實(shí)現(xiàn)一個翻譯功能
一直喜歡用Google Translate API進(jìn)行在線翻譯,但是服務(wù)越來越慢這篇文章,所以只能換一個了,主要給大家介紹了關(guān)于C#調(diào)用百度翻譯API實(shí)現(xiàn)一個翻譯功能的相關(guān)資料,需要的朋友可以參考下2021-06-06c#動態(tài)調(diào)用Webservice的兩種方法實(shí)例
這篇文章介紹了c#動態(tài)調(diào)用Webservice的兩種方法實(shí)例,有需要的朋友可以參考一下2013-08-08