ICommand命令 mvvm模式事件

本文介绍了如何在WPF项目中利用ICommand实现MVVM架构,通过NuGet包Microsoft.Xaml.Behaviors.Wpf简化控件事件处理,并通过CommandBase类来管理UI状态。实例展示了如何在ViewModel中定义并初始化命令,以及在XAML中绑定和触发事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ICommand

mvvm 模式,用于代替控件事件, 可以使代码结构更清晰;还能更好的控制各个UI的状态(启用/禁用)

  1. nuget 安装 Microsoft.Xaml.Behaviors.Wpf,用于定义控件事件,并在xaml中引用

    xmlns:i=“http://schemas.microsoft.com/xaml/behaviors”
    
  2. 定义一个CommandBase工具类,继承ICommand

    public class CommandBase : ICommand
    {
        public event EventHandler CanExecuteChanged;
    
        public bool CanExecute(object parameter)
        {
            return DoCanExecute.Invoke(parameter);
        }
    
        public void Execute(object parameter)
        {
            DoExecute?.Invoke(parameter);
        }
    
        public Action<object> DoExecute { get; set; }
        public Func<object,bool> DoCanExecute { get; set; }
    }
    
  3. 在ViewModel中定义事件,并初始化

    public class SongPlayListViewModel
    {
        //定义命令
        public CommandBase PlaySongClickCommand { get; set; }
        public SongPlayListViewModel()
        {
            //初始化命令
            PlaySongClickCommand = new CommandBase();
            PlaySongClickCommand.DoExecute = new Action<object>((o) =>
    		{
                //命令触发逻辑
                //.....
            });
            //按钮是否是在启用状态                           
            PlaySongClickCommand.DoCanExecute = new Func<object, bool>((o) => { return true; });
        }
    }
    
  4. 在xaml 中使用

    <behaviors:Interaction.Triggers>
        <!--双击播放音乐,绑定刚刚定义好的命令. EventName是事件名称, CommandParameter是要传的参数  -->
        <behaviors:EventTrigger EventName="MouseDoubleClick">
            <behaviors:InvokeCommandAction Command="{Binding PlaySongClickCommand}" 
                                           CommandParameter="{Binding Model.SelectdIndex}"/>
        </behaviors:EventTrigger>
    </behaviors:Interaction.Triggers>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值