WPF —— MVVM(Model-View-ViewModel)模式详解


一、MVVM 是什么?

MVVM 是 Model-View-ViewModel 的缩写,是一种设计模式,目的是将 界面(View)数据(Model)业务逻辑(ViewModel) 分离,让代码更容易维护和测试。

  • Model(数据层):负责数据的存储和处理(比如从数据库读取数据)。
  • View(界面层):负责显示界面(比如按钮、文本框)。
  • ViewModel(逻辑层):连接 View 和 Model,处理业务逻辑(比如点击按钮后做什么)。
+-------------------+       +-------------------+       +-------------------+
|       View        |       |    ViewModel      |       |       Model       |
+-------------------+       +-------------------+       +-------------------+
| - UI组件          |       | - 数据绑定        |       | - 数据结构        |
| - 布局            |       | - 命令绑定        |       | - 业务逻辑        |
| - 数据展示        |       | - 数据转换        |       | - 数据访问        |
+-------------------+       | - 事件处理        |       +-------------------+
                            | - 业务逻辑        |
                            +-------------------+

二、为什么要用 MVVM?

假设你开发一个计算器:

  • 传统方式:按钮的点击事件直接在界面代码中处理,界面和逻辑混在一起,难以维护。
  • MVVM 方式:按钮的点击事件通过 ViewModel 处理,界面只负责显示,代码清晰。

三、MVVM 的核心机制

1. 数据绑定(Data Binding)
  • 作用:让 View 和 ViewModel 自动同步数据。
  • 示例:文本框的内容绑定到 ViewModel 的属性,当属性变化时,文本框自动更新。
2. 命令(Command)
  • 作用:代替传统的事件(如按钮点击事件),让 View 触发 ViewModel 的逻辑。
  • 示例:点击按钮时执行 ViewModel 中的 SearchCommand
3. 通知机制(INotifyPropertyChanged)
  • 作用:当 ViewModel 的数据变化时,通知 View 更新界面。
  • 示例:ViewModel 中的 UserName 属性变化时,界面自动显示新名字。

四、委托(Delegate)和事件(Event)

1. 委托(Delegate)
  • 是什么:委托是一种“函数指针”,允许将方法作为参数传递。
  • 生活例子:你点外卖时,告诉外卖小哥“送到门口”,这里的“送到门口”就是一个委托方法。
// 定义一个委托
public delegate void ShowMessageDelegate(string message);

// 使用委托
public void DisplayMessage(string msg)
{
   
   
    Console.WriteLine(msg);
}

ShowMessageDelegate delegateExample = DisplayMessage;
delegateExample("Hello, MVVM!"); // 输出:Hello, MVVM!
2. 事件(Event)
  • 是什么:事件是基于委托的机制,用于在某个动作发生时通知其他对象。
  • 生活例子:按钮的点击事件——当你点击按钮时,会触发一个事件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

周杰伦fans

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

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

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

打赏作者

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

抵扣说明:

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

余额充值