1 按照《prism项目搭建》来搭建prism项目

2 在项目中添加ViewModels文件夹,在其下面添加类

using Prism.Commands;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Prism.Command.ViewModels
{public class MainWindowViewModel:BindableBase{private string _Title="Hello";public string Title{get { return _Title; }set { SetProperty(ref _Title, value); }}private bool _IsEnabled;public bool IsEnabled{get { return _IsEnabled; }set { SetProperty(ref _IsEnabled, value);//当命令实例化没有加Observes方法时候,必须要这个,如果有添加Observes方法时候,可以去掉这个//ExecuteDelegateCommand.RaiseCanExecuteChanged(); }}private string _updateText;public string UpdateText{get { return _updateText; }set { SetProperty(ref _updateText, value); }}public DelegateCommand ExecuteDelegateCommand { get; }public DelegateCommand DelegateCommandObservesProperty { get; }public DelegateCommand DelegateCommandObservesCanExecute { get; }public DelegateCommand<string> ExecuteGenericDelegateCommand { get; }public MainWindowViewModel(){ExecuteDelegateCommand = new DelegateCommand(Execute, CanExecute);DelegateCommandObservesProperty = new DelegateCommand(Execute, CanExecute).ObservesProperty(() => IsEnabled);DelegateCommandObservesCanExecute = new DelegateCommand(Execute).ObservesCanExecute(() => IsEnabled);ExecuteGenericDelegateCommand = new DelegateCommand<string>(ExecuteGeneric).ObservesCanExecute(() => IsEnabled);}private void ExecuteGeneric(string obj){UpdateText = obj;}private bool CanExecute(){return IsEnabled;}private void Execute(){UpdateText = $"Updated:{DateTime.Now.ToString()}";}}
}

3 修改MainWindow.xaml

<Window x:Class="Prism.Command.Views.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:Prism.Command"xmlns:prism="http://prismlibrary.com/"prism:ViewModelLocator.AutoWireViewModel="True"mc:Ignorable="d"Title="{Binding Title}" Height="450" Width="800"><StackPanel><CheckBox Content="Enable Command" IsChecked="{Binding IsEnabled}" Margin="10"/><Button Content="DelegateCommand" Command="{Binding ExecuteDelegateCommand}" Margin="10"/><Button Content="DelegateCommand ObserveProperty" Command="{Binding DelegateCommandObservesProperty}" Margin="10"/><Button Content="DelegateCommand ObserveCanExecute" Command="{Binding DelegateCommandObservesCanExecute}" Margin="10"/><Button Content="DelegateCommand Generic" Command="{Binding ExecuteGenericDelegateCommand}" CommandParameter="Pass Parameter" Margin="10"/><TextBlock Text="{Binding UpdateText}" Margin="10" FontSize="30"/></StackPanel>
</Window>

prism DelegateCommand的使用相关推荐

  1. Prism_Commanding(2)

    Commanding 除了提供对要在视图中显示或编辑的数据的访问之外,ViewModel还可能定义可由用户执行的一个或多个动作或操作.用户可以通过UI执行的动作或操作通常被定义为命令.命令提供了一种方 ...

  2. 0613-prism-docs

    https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff648465(v%3dpandp.10) 依赖注入 使用Prism Libra ...

  3. 使用Prism提供的类实现WPF MVVM点餐Demo

    由于公司开发的技术需求,近期在学习MVVM模式开发WPF应用程序.进过一段时间的学习,感受到:学习MVVM模式,最好的方法就是用MVVM做几个Demo,因为编程里面的东西还是原来的WPF的相关知识.最 ...

  4. prism项目搭建 wpf_Prism完成的一个WPF项目

    本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结. 总共分三个部分: 基础篇主要针对C#初学者,巩固C#常用知识点: 中级篇主要针对WPF布局与Mat ...

  5. C# WPF MVVM模式Prism框架下事件发布与订阅

    01 - 前言 处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事 ...

  6. C# WPF MVVM模式Prism框架从零搭建(经典)

    01 - 前言 目前最新的PRISM的版本是8.1.97,本节以6.3.0.0 讲解,可以在Github上获取PRISM的源码. Prism Github地址:https://github.com/P ...

  7. 从PRISM开始学WPF(九)交互Interaction?

    原文:从PRISM开始学WPF(九)交互Interaction? 0x07交互 这是这个系列的最后一篇了,主要介绍了Prism中为我们提供几种弹窗交互的方式. Notification通知式 Pris ...

  8. .NET Core 3 WPF MVVM框架 Prism系列之事件聚合器

    本文将介绍如何在.NET Core3环境下使用MVVM框架Prism的使用事件聚合器实现模块间的通信 一.事件聚合器  在上一篇 .NET Core 3 WPF MVVM框架 Prism系列之模块化 ...

  9. 从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator?

    从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator? 原文:从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator? 从PRISM开始学 ...

最新文章

  1. 如何把pdf转换为txt文档,pdf转txt的好方法
  2. 计算机中,文本文件和二进制文件的区别
  3. K8S operator方式部署redis-cluster
  4. 7.4.1 矩阵低秩近似、矩阵范数
  5. Koa2+Mysql搭建简易博客
  6. 智商145!比利时神童9岁读完大学,成史上最年轻大学毕业生
  7. 【转】盖茨给职场新人的10句话
  8. 严重: Exception sending context initialized event to listener instance of class
  9. Web服务器用户权限设置,Windows系统下WEB服务器权限的设置详解(四)
  10. 解决JS中文乱码问题
  11. flv播放器V2.6.5官方版【免费的FLV视频播放器】
  12. 针对优衣库商品的图片获取(第一张)以及excel图片链接显示成图片
  13. el tree 双击事件
  14. 戴尔台式计算机怎么拆卸两块侧板,高效易用 戴尔OptiPlex 7050商用台式机评测
  15. kepware KEPServerEX与欧姆龙NX系列PLC通讯-Omron NJ Ethernet
  16. luogu P4299 首都
  17. C语言字符串、转义字符
  18. ES2019新增功能
  19. 详解 30 道 Vue 面试题
  20. Matlab图论工具箱的命令

热门文章

  1. private方法可以被代理吗?
  2. 优盘不能弹出的解决办法
  3. 023-zabbix性能优化中的几个中肯建议
  4. Qt基于QGraphicsView 实现四个教具之一直尺(一)
  5. 【Codewars python 4kyu】: Breadcrumb Generator
  6. Fourth4: NAT VRRP | Cloud computing
  7. 游戏建模基本流程(讲解建模经验)
  8. 清理autodesk产品注册表_如何完整移除Autodesk的产品?
  9. 爬虫笔记(一)——Requests库
  10. 你爱或者不爱,他都在那里 - 云/边/端三协同下的边缘计算