MvvmLight(3)-利用Binding解耦界面与业务及数据

22 篇文章 2 订阅

在上节介绍 WPF中的数据绑定方式 时,我知道 ,建立数据绑定时,需要作如下处理:

  • 待绑定数据类实现INotifyPropertyChange;
  • 需暴露给外界的属性发改变时,触发PropertyChanged事件,事件的参数为属性的名称;
  • 将数据类作为数据源绑定到界面上;
  • 在XAML中通过Path 指定绑定的属性。

 在这些操作中将数据类作为数据源绑定到界面上时,是通过给DataContext赋值的方式绑定的。
 当一个控件Binding数据源时,只指定的Path,而不知道Source,会沿着UI元素树,一路往上查找;每个结点,都要查看下该节点的DataContext是否包含Path指定的属性。

 DataContext属性是被定义在FrameworkElement类里的,这个类是所有WPF控件的基类,这意味着所有WPF控件都具备这个属性; 这也意味着,我们可以在XAML中设置DataContext,进一步解耦界面与逻辑代码。

在这里插入图片描述
为了将界面与业务逻辑解耦,我们将数据和业务逻辑纳入单独的类文件,新建一个名为MainWindowViewModel.cs的类文件;并定义界面数据源

namespace EBookTool.View
{
     public class MainWindowViewModel
    {
        private Account _Data = new Account();
        public  Account AccountData
        {
            get {
                return _Data;
            }
            set
            {
                _Data = value;
                PropertyChanged.Invoke(this, new PropertyChangedEventArgs("AccountData"));
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;
    }
}```
界面XAML中修改代码
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415105207984.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JpdG9MaW5r,size_16,color_FFFFFF,t_70)
这里我们UI相关的文件中,除了.xaml文件,CS文件变得非常简单;不再包含任何同数据和业务逻辑相关的代码

```csharp
namespace EBookTool.View
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BoBPage

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

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

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

打赏作者

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

抵扣说明:

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

余额充值