MVVM命令绑定原理

跟据网上前辈们的资料。了解到命令在MVVM绑定有三种行式。

1.DelegateCommand

2.RelayCommand

3.AttachbehaviorCommand

 1 /// <summary>
 2     /// Delegatecommand,继承一个命令接口。
 3     /// </summary>
 4     public class DelegateCommand : ICommand
 5     {
 6         Func<object, bool> canExecute;
 7         Action<object> executeAction;
 8         bool canExecuteCache;
 9
10         public DelegateCommand(Action<object> executeAction, Func<object, bool> canExecute)
11         {
12             this.executeAction = executeAction;
13             this.canExecute = canExecute;
14         }
15
16         #region ICommand Members
17
18         public bool CanExecute(object parameter)
19         {
20             bool temp = canExecute(parameter);
21
22             if (canExecuteCache != temp)
23             {
24                 canExecuteCache = temp;
25                 if (CanExecuteChanged != null)
26                 {
27                     CanExecuteChanged(this, new EventArgs());
28                 }
29             }
30
31             return canExecuteCache;
32         }
33
34         public event EventHandler CanExecuteChanged;
35
36         public void Execute(object parameter)
37         {
38             executeAction(parameter);
39         }
40
41         #endregion
42     }
在代码中不难看出这两个变量。Func<object, bool> canExecute;
Action<object> executeAction;

具体这两种变量的含义网上有很多。可以百度。
时间: 2024-09-29 16:51:33

MVVM命令绑定原理的相关文章

MVVM模式解析和在WPF中的实现(三) 命令绑定

MVVM模式解析和在WPF中的实现(三) 命令绑定 0x00 命令绑定要达到的效果 命令绑定要关注的核心就是两个方面的问题,命令能否执行和命令怎么执行.也就是说当View中的一个Button绑定了ViewModel中一个命令后,什么时候这个Button是可用的,按下Button后执行什么操作.解决了这两个问题基本就实现了命令绑定.另外一个问题就是执行过程中需要的数据(参数)要如何传递.本次主要探讨这几个问题. 0x01 命令绑定的实现 自定义一个能够被绑定的命令需要实现ICommand接口.该接

C#使用Xamarin开发可移植移动应用(3.进阶篇MVVM双向绑定和命令绑定)附源码

前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 嗯..前面3篇就是基础内容..后面就开始逐渐要加深了,进阶篇开始了. 今天的学习内容? 今天我们讲讲Xamarin中的MVVM双向绑定,嗯..需要有一定的MVVM基础.,具体什么是MVVM - -,请百度,我就不多讲了 效果如下: 正文 1.简单的入门Demo 这个时间的功能很简单,就是一个时间的动态显示.

WPF采用MVVM模式(绑定:纯前台、命令:触发器绑定命令)

MVVM绑定 view-viewModel-model,模型介绍省略,就是创建类,添加字段封装属性.注:控件的绑定只能绑定到属性上,不能绑定到字段上: 接下来就是代码 (view): 1 <Window x:Class="WpfBing.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.mi

MVVM 下 ContextMenu的命令绑定

原文:MVVM 下 ContextMenu的命令绑定 由于ContextMenu不继承父级的DataContext,所以如果要绑定父级的DataContext,直接DataContext="{Binding}"是行不通的.因此可通过以下两个方式解决绑定的问题. 1.使用资源的方式 1 <Button Content="Test" Command="{Binding TestCommand}"> 2 <Button.Resourc

vue的双向绑定原理及实现

前言 使用vue也好有一段时间了,虽然对其双向绑定原理也有了解个大概,但也没好好探究下其原理实现,所以这次特意花了几晚时间查阅资料和阅读相关源码,自己也实现一个简单版vue的双向绑定版本,先上个成果图来吸引各位: 代码:                                                                    效果图:   是不是看起来跟vue的使用方式差不多?接下来就来从原理到实现,从简到难一步一步来实现这个SelfVue.由于本文只是为了学习和分享

将命令绑定到事件中(WPF)

转自链接(王旭博客 » WPF 在事件中绑定命令):http://blog.csdn.net/andrew_wx/article/details/37757187 (该文章是<关于 MVVMLight 设计模式系列>中的一节) 本文主要介绍如何在WPF中实现将命令绑定到事件中,很多情况下我们都需要在某个事件触发的时候才去触发命令,所以将命令绑定到事件上是非常有效的做法,下面我们来接着实现将命令绑定到事件中. WPF实现命令绑定到事件 使用 System.Windows.Interactivit

使用 MVVMLight 命令绑定(转)

继上一篇文章的项目,我们实现了数据绑定到界面中.这篇文章我们将实现把命令绑定到按钮上,在XAML中的Button之类的都会有个Command属性可以让我们来绑定命令使用. 首先我们要实现的目标是,在界面中可以点击按钮添加数据,但是最多能添加5条数据,最少保证有1条数据.也就是两个按钮哈(增加数据/删除数据).界面如下: 在界面中我们可以看见,已经增加了5条数据,按钮“增加一条数据”已经呈现灰色不可用状态.这正是因为我们在命令中做了命令是否可用进行的限制. MVVMLight 之 RelayCom

使用 MVVMLight 命令绑定

首先,如果您希望了解更多的MVVMLight技术或希望有顺序的学习MVVMLight,请查阅目录<MVVMLight 设计模式系列使用文章>. 继上一篇文章的项目,我们实现了数据绑定到界面中.这篇文章我们将实现把命令绑定到按钮上,在XAML中的Button之类的都会有个Command属性可以让我们来绑定命令使用. 首先我们要实现的目标是,在界面中可以点击按钮添加数据,但是最多能添加5条数据,最少保证有1条数据.也就是两个按钮哈(增加数据/删除数据).界面如下: 在界面中我们可以看见,已经增加了

vue的双向绑定原理浅析与简单实现

很久之前看过vue的一些原理,对其中的双向绑定原理也有一定程度上的了解,只是最近才在项目上使用vue,这才决定好好了解下vue的实现原理,因此这里对vue的双向绑定原理进行浅析,并做一个简单的实现. vue双向绑定的原理浅析 vue数据的双向绑定是通过数据劫持,并结合发布-订阅模式的方式来实现的. 我们先通过一个最简单的vue例子来查看vue初始化数据上的对象到底是什么东西. var vm = new Vue({ data: { // 双向绑定的数据对象 obj: { a: 1 } }, cre