小工具知识网

当前位置: 首页 > 行业知识 > 【C#】MVVM架构

行业知识

【C#】MVVM架构

2026-11-05 15:56:09 来源:互联网转载

示例结果展示

前提了解

MVVM���Model-View-ViewModel的缩写形式,它通常被用于WPF或Silverlight开发。

Model——可以理解为带有字段,属性的类。例如学校类,教师类,学生类等

View——可以理解为我们所看到的UI。前端界面。

View Model在View和Model之间,起到连接的作用,并且使得View和Model层分离。View Model不仅仅是Model的包装,它还包含了程序逻辑,以及Model扩展,例如,如果Model中有一个公开属性不需要在UI上显示,此时我们可以不再View Model中去定义它。

MVVM模式特点

  • 视图的cs文件包括极少的代码(几乎在cs中不写与数据相关的代码),其核心逻辑都被放在View Model类中,从而使得程序逻辑与视图耦合度降低。
  • ViewModel类作为View的DataContext。
  • 在MVVM下,所有的事件和动作都被当成命令,如按钮的点击操作,此时不是触发点击事件,而是绑定到一个点击命令(Command),再由命令去执行对应的逻辑。

代码

文件分布

Command存放如何进行事件执行的命令,RelayCommand。(基本不变,这里只实现了简单的命令执行方法)

DataHelper存放测试数据,或者是从数据库读取到数据

Model用于存放类数据Student类等

View存放前端界面

ViewModel存放View和Model之间处理的事件及方法,属性。

Command

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Input;namespace MVVMDemo.Commands{    public class RelayCommand :ICommand    {        #region Fields        private Action _execute;        private Func _canExecute;        #endregion         public RelayCommand(Action execute)            : this(execute, null)        {         }        public RelayCommand(Action execute, Func canExecute)        {            if (execute == null)                throw new ArgumentNullException("execute");            _execute = execute;            _canExecute = canExecute;        }        #region ICommand Member        public event EventHandler CanExecuteChanged        {            add            {                if (_canExecute != null)                {                    CommandManager.RequerySuggested += value;                }            }            remove            {                if (_canExecute != null)                {                    CommandManager.RequerySuggested -= value;                }            }

上一篇:csgo怎么进入好友的服务器?

下一篇:宝塔面板使用教程,轻松上手,一键操作,助你成为操作高手!