MvvmLight(2)-WPF中数据绑定(Data Binding)

22 篇文章 2 订阅

WPF 作为展示层技术,华丽的外观和动画,只是它的表层现象;更重要的是,它帮助程序员把思维的重心放在了逻辑层;让展示层永远处于逻辑层的从属地位;由UI驱动,改为数据驱动;其具备这种能力的关键是引入了数据绑定(Data Binding)、依赖属性(Dependency Property)、数据模板(Data Template);

层示层使用WPF类库来实现,所有与业务逻辑和算法相关处理都在逻辑层实现;而层示层与逻辑层的沟通是通过数据绑定(Data Binding)来实现;实现了展示层与逻辑层的解耦,方便开发与测试。

- 数据属性:在WPF中,数据通过属性暴露给外界;

- 数据路径(Path):而UI所关心(绑定)的属性,称为数据路径(Path)

数据属性变更后,如何通知UI,以及UI修改数据后如何通知数据呢?
方法就是在属性的set语句中触发一个PropertyChanged事件;
这个事件,不需要我们去声明,而是继承自位于System.ComponentModel命名空间的INotifyPropertyChange接口;

示例

1、数据源中添加属性,实现INotifyPropertyChange接口,需要通知外面的属性修改时,触发PropertyChanged事件,通知外部哪个属性发生了改变;

using System.ComponentModel;
namespace EBookTool.View
{
    public class Account:INotifyPropertyChanged
    {
        private string name;
        private string phone;
        public Account()
        {
            name = "Wangjianjun";
            phone = "123456";
        }
        public string Name { 
            get => name; 
            set {
                name = value;
                //通知发生改变的属性是哪一个
                PropertyChanged.Invoke(this,new PropertyChangedEventArgs("Name"));
            }}
        public string Phone { get => phone; set => phone = value; }
        /// <summary>
        /// 继承自INotifyPropertyChanged
        /// </summary>
        public event PropertyChangedEventHandler PropertyChanged;
    }
}

2、在UI界面CS文件中,指定数据源

namespace EBookTool.View
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = new Account();
        }
    }
}

3、在XAML中将显示数据的UI与属性通过path绑定
绑定Path

运行结果
运行结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoBPage

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值