Prism程序集为我们提供了DelegateCommand命令,使用该命令可实现窗口直接绑定。
第一步:在ViewModel中定义一个DelegateCommand属性。

          public DelegateCommand<object> SaveCommand { get; set; }

第二步:添加Save和CanSave两个命令相关的方法。

        private void Save(object obj)
{
System.Windows.MessageBox.Show("save command");
} private bool CanSave(object arg)
{
return Total > ;
}

第三步:在ViewModel的构造函数中初始化DelegateCommand命令,并传入第二步定义好的两个方法。

        public UserManageViewModel()
{
SaveCommand = new DelegateCommand<object>(Save,CanSave);
}

第四步:定义当发生什么事件触发命令的CanExecute事件,这里我们定义为当属性值改变时触发。

        public UserManageViewModel()
{
SaveCommand = new DelegateCommand<object>(Save,CanSave);
this.PropertyChanged += UserManageViewModel_PropertyChanged;
} private void UserManageViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
this.SaveCommand.RaiseCanExecuteChanged();
}

第五步:在窗体为按钮绑定该Save命令。

        <StackPanel DockPanel.Dock="Right" Width="" Orientation="Vertical">
<Slider Value="{Binding Total}"></Slider>
<Button Content="save" Command="{Binding SaveCommand}" />
</StackPanel>

完成:运行程序,按钮默认不可用,当Slider的值滑动到5,按钮变为可用,点击按钮将弹出对话框。

一步步实现 Prism + MEF(二)--- 绑定命令的更多相关文章

  1. 一步步实现 Prism + MEF(一)--- 搭建框架

    第一步:构建一个名为Bootstrapper的类作为引导程序. class Bootstrapper : MefBootstrapper { } 第二步:在MainWindow窗体中添加一个Coont ...

  2. WPF使用MVVM(二)-命令绑定

    WPF使用MVVM(二)-命令绑定 上一节已经介绍了WPF的属性绑定,这使得我们只需要指定界面的DataContext,然后就可以让界面绑定我们的属性数据呢. 但是上一节还遗留了一个问题就是我们的按钮 ...

  3. 整理:WPF中应用附加事件制作可以绑定命令的其他事件

    原文:整理:WPF中应用附加事件制作可以绑定命令的其他事件 目的:应用附加事件的方式定义可以绑定的事件,如MouseLeftButton.MouseDouble等等 一.定义属于Control的附加事 ...

  4. WPF绑定命令

    一.目的 降低代码耦合度(降低UI层和BLL层的代码耦合度),将UI层的后台代码更好的转移到BLL层中,让视图和业务逻辑分离的更好 二.使用方式 1.创建一个RelayCommand,继承IComma ...

  5. Docker入门教程(二)命令

    Docker入门教程(二)命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第二篇,介绍了Docker的基本命令以及命令的用法和功能. 在Docker ...

  6. Prism&MEF构建开发框架 (一)

    Shell框架XECA shell.xaml主要起到是一个容器或壳的作用 <Window x:Class="XECA.Shell"      xmlns="http ...

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

    MVVM绑定 view-viewModel-model,模型介绍省略,就是创建类,添加字段封装属性.注:控件的绑定只能绑定到属性上,不能绑定到字段上: 接下来就是代码 (view): <Wind ...

  8. WPF 在事件中绑定命令(不可以在模版中绑定命令)

    其实这也不属于MVVMLight系列中的东东了,没兴趣的朋友可以跳过这篇文章,本文主要介绍如何在WPF中实现将命令绑定到事件中. 上一篇中我们介绍了MVVMLight中的命令的用法,那么仅仅知道命令是 ...

  9. Android ADB命令教程二——ADB命令详解

    Android ADB命令教程二——ADB命令详解 转载▼ 原文链接:http://www.tbk.ren/article/249.html       我们使用 adb -h 来看看,adb命令里面 ...

随机推荐

  1. VMware 报错“Intel VT-x处于禁止状态”

    VMware Workstation 10虚拟机安装64位windows server 2008 R2系统时报错“Intel VT-x处于禁止状态”,如下图.   工具/原料   VMware Wor ...

  2. Tensorlayer

    http://tensorlayer.readthedocs.io/en/latest/

  3. springcloud微服务实战--笔记--1、基础知识

    微服务的问题: 分布式事务和数据一致性. 由于分布式事务本身第实现难度就非常大,所以在微服务架构中,我们更强调在各服务之间进行无事务第调用,而对于数据一致性,只要求数据在最后第处理状态是一致第即可:若 ...

  4. Vue 父子通话

    dom: <app-entry ref="child" :id='entryFaid'  v-on:refreshbizlines="EntryUpdateData ...

  5. python中装饰器你真的理解吗?

    def w1(func): print('装饰器1....') def w1_in(): print('w1_in.....') func() return w1_in def w2(func): p ...

  6. JavaScript如何判断非空

    JavaScript判断非空的语句一般为: var elvis; if (typeof elvis !== "undefined" && elvis !== nul ...

  7. 题解 P1387 【最大正方形】

    传送门 搞不清楚为什么这一题要DP . . . . . . 思路: \(n\le100\),考虑暴力. 要求一大块区间内都是1,考虑前缀和. 在矩阵中求一个符合条件的子矩阵,考虑\(n^3\)的&qu ...

  8. 搭建vps***

    快速搭建ShadowSocks wget --no-check-certificate -O shadowsocks.sh https://raw.githubusercontent.com/tedd ...

  9. java 解析excle

    jjava解析excle或者csv文件并导出到web界面: 创建ExcelShower.java package com.ssm.controller; import java.io.File; im ...

  10. image auto fix the View

    image: { flex: 1, width: null, height: null, resizeMode: 'contain' }