无废话WPF系列19:MVVM简单介绍

简介:

MVVM主要是为了逻辑代码和视图的分离,使CodeBehind只包含对UI的操作。通过绑定和Command来实现

image

下面我们实现一个最简单的示例,点击按钮使年龄加1.

image

XAML代码

1
2
3
4
5
6
7
8
9
10
11
12
13
< Window  x:Class="DeepXAML.MainWindow"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:DeepXAML"      
         xmlns:sys="clr-namespace:System;assembly=mscorlib"
          xmlns:cl="clr-namespace:System.Collections;assembly=mscorlib"
         Title="MainWindow" Height="250" Width="450">
        < StackPanel >
         < TextBox  Text="{Binding Path=Name}"></ TextBox >
         < TextBox  Text="{Binding Path=Age}"></ TextBox >
         < Button  Command="{Binding Path=AddAge}" >Add Age</ Button >
     </ StackPanel >
</ Window >

 

MainPageViewModel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public  class  MainPageViewModel : INotifyPropertyChanged
    {
        public  event  PropertyChangedEventHandler PropertyChanged;
 
        private  string  name;
        public  string  Name {
            get  { return  name; }
            set  {
                name = value;
                if  ( this .PropertyChanged != null )
                {
                    this .PropertyChanged.Invoke( this , new  PropertyChangedEventArgs( "Name" ));
                }
            }
        }
 
        private  int  age;
        public  int  Age {
            get  { return  age; }
            set
            {
                age = value;
                if  ( this .PropertyChanged != null )
                {
                    this .PropertyChanged.Invoke( this , new  PropertyChangedEventArgs( "Age" ));
                }
            }
        }
 
        public  ICommand AddAge
        {
            get  { return  new  AddAgeCommand( this ); }
        }
 
    }

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public  class  AddAgeCommand : ICommand
    {
        private  MainPageViewModel mMainPageViewModel;
        public  AddAgeCommand(MainPageViewModel model)
        {
            mMainPageViewModel = model;
        }
 
        public  bool  CanExecute( object  parameter)
        {
            return  true ;
           
        }
 
        public  event  EventHandler CanExecuteChanged;
 
        public  void  Execute( object  parameter)
        {
            this .mMainPageViewModel.Age += 1;
        }
    }

 

我们可以看一下后台只有很少代码:

1
2
3
4
5
6
7
8
9
public  partial  class  MainWindow : Window
     {
         public  MainWindow()
         {
             InitializeComponent();
             MainPageViewModel mainPageViewModel = new  MainPageViewModel { Age = 20, Name = "Jack"  };
             this .DataContext = mainPageViewModel;
         }     
     }
本文转自敏捷的水博客园博客,原文链接http://www.cnblogs.com/cnblogsfans/archive/2011/03/01/1967858.html如需转载请自行联系原作者

王德水
相关文章
|
前端开发 C# 开发者
WPF开发者必读:MVVM模式实战,轻松构建可维护的应用程序,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,MVVM(Model-View-ViewModel)模式通过分离关注点,提高了代码的可维护性和可扩展性。本文详细介绍了MVVM模式的三个核心组件:Model(数据模型)、View(用户界面)和ViewModel(处理数据绑定与逻辑),并通过示例代码展示了如何在WPF项目中实现MVVM模式。通过这种模式,开发者可以更高效地构建桌面应用程序。希望本文能帮助你在WPF开发中更好地应用MVVM模式。
695 1
|
设计模式 前端开发 C#
WPF 项目中 MVVM模式 的简单例子说明
本文通过WPF项目中的加法操作示例,讲解了MVVM模式的结构和实现方法,包括数据模型、视图、视图模型的创建和数据绑定,以及命令的实现和事件通知机制。
|
前端开发 C# 设计模式
“深度剖析WPF开发中的设计模式应用:以MVVM为核心,手把手教你重构代码结构,实现软件工程的最佳实践与高效协作”
【8月更文挑战第31天】设计模式是在软件工程中解决常见问题的成熟方案。在WPF开发中,合理应用如MVC、MVVM及工厂模式等能显著提升代码质量和可维护性。本文通过具体案例,详细解析了这些模式的实际应用,特别是MVVM模式如何通过分离UI逻辑与业务逻辑,实现视图与模型的松耦合,从而优化代码结构并提高开发效率。通过示例代码展示了从模型定义、视图模型管理到视图展示的全过程,帮助读者更好地理解并应用这些模式。
365 0
|
前端开发 开发者 C#
WPF开发者必读:MVVM模式实战,轻松实现现代桌面应用架构,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,MVVM(Model-View-ViewModel)模式通过分离应用程序的逻辑和界面,提高了代码的可维护性和可扩展性。本文介绍了MVVM模式的三个核心组件:Model(数据模型)、View(用户界面)和ViewModel(处理数据绑定和逻辑),并通过示例代码展示了如何在WPF项目中实现MVVM模式。通过这种方式,开发者可以构建更加高效和可扩展的桌面应用程序。
672 0
|
设计模式 前端开发 C#
WPF/C#:理解与实现WPF中的MVVM模式
WPF/C#:理解与实现WPF中的MVVM模式
1062 0
|
前端开发 C# 图形学
【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入
前言:在C/S架构上,WPF无疑已经是“桌面一霸”了。在.NET生态环境中,很多小伙伴还在使用Winform开发C/S架构的桌面应用。但是WPF也有很多年的历史了,并且基于MVVM的开发模式,受到了很多开发者的喜爱。
970 0
【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入
|
设计模式 开发框架 前端开发
深入理解WPF中MVVM的设计思想
近些年来,随着WPF在生产,制造,工业控制等领域应用越来越广发,很多企业对WPF开发的需求也逐渐增多,使得很多人看到潜在机会,不断从Web,WinForm开发转向了WPF开发,但是WPF开发也有很多新的概念及设计思想,如:数据驱动,数据绑定,依赖属性,命令,控件模板,数据模板,MVVM等,与传统WinForm,ASP.NET WebForm开发,有很大的差异,今天就以一个简单的小例子,简述WPF开发中MVVM设计思想及应用。
271 0
|
前端开发
WPF-Binding问题-MVVM中IsChecked属性CommandParameter转换值类型空异常
WPF-Binding问题-MVVM中IsChecked属性CommandParameter转换值类型空异常
284 0
|
前端开发 算法 JavaScript
走进WPF之MVVM完整案例
走进WPF之MVVM完整案例
484 0
|
前端开发 C# 数据库
WPF MVVM系统入门-下
本文详细讲解WPF,MVVM开发,实现UI与逻辑的解耦。
422 0