C#WPF資料繫結模板化操作四步走

C#測量小生發表於2022-01-04

前言:WPF資料繫結對於WPF應用程式來說尤為重要,本文將講述使用MVVM模式進行資料繫結的四步走用法:

具體例項程式碼如下:

以下程式碼僅供參考,如有問題請在評論區留言,謝謝

 1 第一步:宣告一個類用來實現介面 INotifyPropertyChanged,並在介面的後臺程式碼中例項化vm物件
 2 
 3 public class NotifyPropertyObject : INotifyPropertyChanged
 4 {
 5         public event PropertyChangedEventHandler PropertyChanged;
 7         public void RaisePropertyChanged(string propertyName)
 8         {
 9             if (PropertyChanged != null)
10             {
11                 PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
12             }
13         }
14 }
15 
16 private MainWindowVM vm = new MainWindowVM();             //重點
17 public MainWindow()
18 {                  
19      InitializeComponent();
20      this.DataContext = vm;//重點
21 }
22 
23 第二步:為每一個介面建立其模型類,如MainWindowVM,AzimuthWindowVM........,此種型別的類同樣需繼承自類NotifyPropertyObject
24 注意:(1)此類中主要新增後臺的實現程式碼,其一是使後臺程式碼儘可能簡單;其二是便於資料的繫結
25      (2)此類中大多數情況下寫的是屬性和方法
26 示例:
27 
28 public class MainWindowVM : NotifyPropertyObject
29 {
30     private double _dmsL0;   //中央子午線經度
31         public double dmsL0
32         {
33             get { return _dmsL0; }
34             set 
35             {
36                 _dmsL0 = value;
37                 RaisePropertyChanged("dmsL0");
38             }
39         }
40 }
41 
42 public class AzimuthWindowVM : NotifyPropertyObject
43 {
44     private string azName = "A001->B004的座標方位角";
45         public string AzName
46         {
47             get { return azName; }
48             set 
49             { 
50                 azName = value;
51                 RaisePropertyChanged("AzName"); 
52             }
53         }
54 }
55 
56 第三步:如果類中存在與介面相關的量,則讓該類繼承類NotifyPropertyObject,並在派生類中在屬性中的Set程式碼塊中進行繫結
57 
58 public class Ellipsoid : NotifyPropertyObject
59 {
60         private double _a; //長半軸
61         public double a 
62         {
63             get => _a;
64             set 
65             {
66                 _a = value;
67                 if (_a > 0 && _f > 0) 
68                 {
69                     Init(a, f);
70                 }
71                 
72                 RaisePropertyChanged("a");
73             }
74         }
75 }
76 
77 第四步:在介面設計程式碼中進行繫結
78 
79 示例:
80 1、<TextBox Grid.Column="2" VerticalAlignment="Center" Text="{Binding CurrentEllipsoid.a}"
81    IsEnabled="{Binding CurrentEllipsoid.IsCustomEllopsoid}"/>
82 2、<ComboBox VerticalAlignment="Center" ItemsSource="{Binding EllipsoidList}"
83    SelectedItem="{Binding CurrentEllipsoid}"/>
84 3、Title="{Binding Title}"  注意:標題也可繫結

經以上四步走,WPF資料繫結工作已經基本完成,實驗證明該方法提高了程式的容錯能力,以及程式資料結構的健壯性。

相關文章