C# WPF数据绑定模板化操作的完整步骤
作者:C#测量小生 时间:2023-05-20 15:44:50
前言:
WPF数据绑定对于WPF应用程序来说尤为重要,本文将讲述使用MVVM模式进行数据绑定的四步走用法:
具体实例代码如下:
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(); //重点
public MainWindow()
{
InitializeComponent();
this.DataContext = vm;//重点
}
第二步:为每一个界面建立其模型类,如MainWindowVM,AzimuthWindowVM........,此种类型的类同样需继承自类NotifyPropertyObject
注意:(1)此类中主要添加后台的实现代码,其一是使后台代码尽可能简单;其二是便于数据的绑定
(2)此类中大多数情况下写的是属性和方法
示例:
public class MainWindowVM : NotifyPropertyObject
{
private double _dmsL0; //中央子午线经度
public double dmsL0
{
get { return _dmsL0; }
set
{
_dmsL0 = value;
RaisePropertyChanged("dmsL0");
}
}
}
public class AzimuthWindowVM : NotifyPropertyObject
{
private string azName = "A001->B004的坐标方位角";
public string AzName
{
get { return azName; }
set
{
azName = value;
RaisePropertyChanged("AzName");
}
}
}
第三步:如果类中存在与界面相关的量,则让该类继承类NotifyPropertyObject,并在派生类中在属性中的Set代码块中进行绑定
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");
}
}
}
第四步:在界面设计代码中进行绑定
示例:
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}" 注意:标题也可绑定
经以上四步走,WPF数据绑定工作已经基本完成,实验证明该方法提高了程序的容错能力,以及程序数据结构的健壮性。
来源:https://www.cnblogs.com/fzyyds/p/15762649.html
标签:c#,wpf,数据绑定
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
java反射深入剖析(推荐)
2022-10-10 18:50:35
![](https://img.aspxhome.com/file/2023/7/113487_0s.jpg)
如何通过Android Stduio来编写一个完整的天气预报APP
2023-10-11 17:45:01
![](https://img.aspxhome.com/file/2023/8/96028_0s.png)
基于maven的三种packaging方式
2021-09-30 22:15:05
![](https://img.aspxhome.com/file/2023/9/132049_0s.png)
Java 访问剪切板(复制,粘贴)的示例
2023-11-10 12:26:13
100行C#代码实现经典扫雷游戏
2023-12-05 16:33:30
![](https://img.aspxhome.com/file/2023/0/70400_0s.png)
java 中 System.out.println()和System.out.write()的区别
2021-09-17 04:30:52
Android实现Activity水平和垂直滚动条的方法
2021-07-04 13:06:06
详解Java Synchronized的实现原理
2023-11-25 06:04:53
![](https://img.aspxhome.com/file/2023/7/60037_0s.png)
java 线程锁详细介绍及实例代码
2022-03-16 13:50:45
Java用邻接矩阵存储图的示例代码
2021-10-05 21:39:18
![](https://img.aspxhome.com/file/2023/1/64171_0s.png)
解决mybatis三表连接查询数据重复的问题
2023-09-13 15:24:25
![](https://img.aspxhome.com/file/2023/2/105912_0s.jpg)
Android使用GPS获取用户地理位置并监听位置变化的方法
2022-03-29 14:24:17
![](https://img.aspxhome.com/file/2023/8/92628_0s.png)
详解Java中switch的新特性
2023-11-24 23:41:54
![](https://img.aspxhome.com/file/2023/4/60154_0s.webp)
Java 数据结构与算法系列精讲之队列
2023-09-26 21:10:31
![](https://img.aspxhome.com/file/2023/7/80977_0s.gif)
SpringBoot JPA使用配置过程详解
2022-12-03 15:31:33
JavaMap两种遍历方式keySet与entrySet详解
2022-04-17 14:36:29
揭秘在ListView等AdapterView上动态添加删除项的陷阱
2022-11-26 16:02:27
![](https://img.aspxhome.com/file/2023/9/137969_0s.jpg)
Android 自定义阴影效果详解及实例
2022-11-22 01:40:24
![](https://img.aspxhome.com/file/2023/0/117100_0s.jpg)
Java中的CAS和ABA问题说明
2021-08-19 11:08:18
![](https://img.aspxhome.com/file/2023/7/66637_0s.png)
鉴权认证+aop+注解+过滤feign请求的实例
2022-06-05 14:25:34
![](https://img.aspxhome.com/file/2023/2/74882_0s.jpg)