prism DelegateCommand的使用
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的使用相关推荐
- Prism_Commanding(2)
Commanding 除了提供对要在视图中显示或编辑的数据的访问之外,ViewModel还可能定义可由用户执行的一个或多个动作或操作.用户可以通过UI执行的动作或操作通常被定义为命令.命令提供了一种方 ...
- 0613-prism-docs
https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff648465(v%3dpandp.10) 依赖注入 使用Prism Libra ...
- 使用Prism提供的类实现WPF MVVM点餐Demo
由于公司开发的技术需求,近期在学习MVVM模式开发WPF应用程序.进过一段时间的学习,感受到:学习MVVM模式,最好的方法就是用MVVM做几个Demo,因为编程里面的东西还是原来的WPF的相关知识.最 ...
- prism项目搭建 wpf_Prism完成的一个WPF项目
本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结. 总共分三个部分: 基础篇主要针对C#初学者,巩固C#常用知识点: 中级篇主要针对WPF布局与Mat ...
- C# WPF MVVM模式Prism框架下事件发布与订阅
01 - 前言 处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事 ...
- C# WPF MVVM模式Prism框架从零搭建(经典)
01 - 前言 目前最新的PRISM的版本是8.1.97,本节以6.3.0.0 讲解,可以在Github上获取PRISM的源码. Prism Github地址:https://github.com/P ...
- 从PRISM开始学WPF(九)交互Interaction?
原文:从PRISM开始学WPF(九)交互Interaction? 0x07交互 这是这个系列的最后一篇了,主要介绍了Prism中为我们提供几种弹窗交互的方式. Notification通知式 Pris ...
- .NET Core 3 WPF MVVM框架 Prism系列之事件聚合器
本文将介绍如何在.NET Core3环境下使用MVVM框架Prism的使用事件聚合器实现模块间的通信 一.事件聚合器 在上一篇 .NET Core 3 WPF MVVM框架 Prism系列之模块化 ...
- 从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator?
从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator? 原文:从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator? 从PRISM开始学 ...
最新文章
- 如何把pdf转换为txt文档,pdf转txt的好方法
- 计算机中,文本文件和二进制文件的区别
- K8S operator方式部署redis-cluster
- 7.4.1 矩阵低秩近似、矩阵范数
- Koa2+Mysql搭建简易博客
- 智商145!比利时神童9岁读完大学,成史上最年轻大学毕业生
- 【转】盖茨给职场新人的10句话
- 严重: Exception sending context initialized event to listener instance of class
- Web服务器用户权限设置,Windows系统下WEB服务器权限的设置详解(四)
- 解决JS中文乱码问题
- flv播放器V2.6.5官方版【免费的FLV视频播放器】
- 针对优衣库商品的图片获取(第一张)以及excel图片链接显示成图片
- el tree 双击事件
- 戴尔台式计算机怎么拆卸两块侧板,高效易用 戴尔OptiPlex 7050商用台式机评测
- kepware KEPServerEX与欧姆龙NX系列PLC通讯-Omron NJ Ethernet
- luogu P4299 首都
- C语言字符串、转义字符
- ES2019新增功能
- 详解 30 道 Vue 面试题
- Matlab图论工具箱的命令
热门文章
- private方法可以被代理吗?
- 优盘不能弹出的解决办法
- 023-zabbix性能优化中的几个中肯建议
- Qt基于QGraphicsView 实现四个教具之一直尺(一)
- 【Codewars python 4kyu】: Breadcrumb Generator
- Fourth4: NAT VRRP | Cloud computing
- 游戏建模基本流程(讲解建模经验)
- 清理autodesk产品注册表_如何完整移除Autodesk的产品?
- 爬虫笔记(一)——Requests库
- 你爱或者不爱,他都在那里 - 云/边/端三协同下的边缘计算