博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
13、UsingDelegateCommands-MVVM WPF命令的使用
阅读量:6164 次
发布时间:2019-06-21

本文共 3478 字,大约阅读时间需要 11 分钟。

  1、将App.xaml中的StartupUri="MainWindow.xaml"删除。

  2、使用NuGet安装Prism.Wpf、Prism.Core、Prism.Unity。

  3、添加类“Bootstrapper”,编辑如下:

1 using Microsoft.Practices.Unity; 2 using Prism.Unity; 3 using System.Windows; 4 using BootstrapperShell.Views; 5  6 namespace BootstrapperShell 7 { 8     public class Bootstrapper : UnityBootstrapper 9     {10         protected override DependencyObject CreateShell()11         {12             return Container.Resolve
();13 }14 15 protected override void InitializeShell()16 {17 Application.Current.MainWindow.Show();18 }19 }20 }

  4、创建文件夹Views,将MainWindow.xaml移动到此文件夹中。创建文件夹ViewModels,新建类MainWindowViewModel.cs。注意:VM类的名称一定是V+“ViewModel”,例如MainWindow+“ViewModel”。

    

1 
11
12
13
14
15
16
17
18
19

 

1 using System; 2 using Prism.Commands; 3 using Prism.Mvvm; 4  5 namespace UsingDelegateCommands.ViewModels 6 { 7     public class MainWindowViewModel:BindableBase 8     { 9         private bool _isEnabled;10         public bool IsEnabled11         {12             get { return _isEnabled; }13             set14             {15                 SetProperty(ref _isEnabled, value);16                 //增加执行监控17                 ExecuteDelegateCommand.RaiseCanExecuteChanged();18             }19         }20 21         private string _updateText;22         public string UpdateText23         {24             get { return _updateText; }25             set { SetProperty(ref _updateText, value); }26         }27 28         public DelegateCommand ExecuteDelegateCommand { get; private set; }29         public DelegateCommand
ExecuteGenericDelegateCommand { get; private set; }30 public DelegateCommand DelegateCommandObservesProperty { get; private set; }31 public DelegateCommand DelegateCommandObservesCanExecute { get; private set; }32 33 public MainWindowViewModel()34 {35 ExecuteDelegateCommand = new DelegateCommand(Execute, CanExecute);36 37 DelegateCommandObservesProperty = new DelegateCommand(Execute, CanExecute).ObservesProperty(() => IsEnabled);38 39 DelegateCommandObservesCanExecute = new DelegateCommand(Execute).ObservesCanExecute(() => IsEnabled);40 41 ExecuteGenericDelegateCommand = new DelegateCommand
(ExecuteGeneric).ObservesCanExecute(() => IsEnabled);42 }43 44 private void Execute()45 {46 UpdateText = $"Updated:{DateTime.Now}";47 }48 49 private void ExecuteGeneric(string parameter)50 {51 UpdateText = parameter;52 }53 54 private bool CanExecute()55 {56 return IsEnabled;57 }58 }59 }

  5、修改App.xaml

1 using System.Collections.Generic; 2 using System.Configuration; 3 using System.Data; 4 using System.Linq; 5 using System.Threading.Tasks; 6 using System.Windows; 7  8 namespace BootstrapperShell 9 {10     /// 11     /// App.xaml 的交互逻辑12     /// 13     public partial class App : Application14     {15         protected override void OnStartup(StartupEventArgs e)16         {17             base.OnStartup(e);18 19             var bootstrapper = new Bootstrapper();20             bootstrapper.Run();21         }22     }23 }

   6、最终结果:

 

   

  

  

 

   

 

转载于:https://www.cnblogs.com/bjxingch/articles/9571473.html

你可能感兴趣的文章
Sharepoint学习笔记—修改SharePoint的Timeouts (Execution Timeout)
查看>>
CSS引入的方式有哪些? link和@import的区别?
查看>>
Redis 介绍2——常见基本类型
查看>>
asp.net开发mysql注意事项
查看>>
(转)Cortex-M3 (NXP LPC1788)之EEPROM存储器
查看>>
ubuntu set defult jdk
查看>>
[译]ECMAScript.next:TC39 2012年9月会议总结
查看>>
【Xcode】编辑与调试
查看>>
用tar和split将文件分包压缩
查看>>
[BTS] Could not find stored procedure 'mp_sap_check_tid'
查看>>
PLSQL DBMS_DDL.ALTER_COMPILE
查看>>
Activity生命周期
查看>>
高仿UC浏览器弹出菜单效果
查看>>
Ubuntu忘记密码,进不了系统的解决方法
查看>>
[原创]白盒测试技术思维导图
查看>>
<<Information Store and Management>> 读书笔记 之八
查看>>
Windows 8 开发之设置合约
查看>>
闲说HeartBeat心跳包和TCP协议的KeepAlive机制
查看>>
MoSQL
查看>>
Hibernate多对一外键单向关联(Annotation配置)
查看>>