WPF中RelayCommand的完成与使用详解

WPF中RelayCommand的实现与使用详解(附简单示例)

引言

在WPF开发中,命令(Command)是实现MVVM模式的核心要素之一,它能够完美分离UI交互与业务逻辑。RelayCommand(也称为DelegateCommand)是ICommand接口的经典实现,通过委托机制将命令的执行逻辑和可执行条件外部化,极大提升了代码的灵活性和可维护性。

本文将从RelayCommand的核心实现代码入手,通过一个简单的计数器示例,详解其工作原理和使用方法,适合WPF初学者快速掌握命令机制。

一、RelayCommand核心实现(无参数版)

完整代码

using System;
using System.Windows.Input;
// 无参数命令实现
public class RelayCommand : ICommand
{

// 存储命令执行逻辑的委托
private readonly Action _execute;
// 存储命令可执行条件的委托
private readonly Func<bool> _canExecute;
  // 通知UI更新命令状态的事件
  public event EventHandler CanExecuteChanged;
  // 构造函数:接收执行逻辑和可执行条件
  public RelayCommand(Action execute, Func<bool> canExecute = null)
    {
    
    _execute = execute;
    _canExecute = canExecute;
    }
    // 判断命令是否可执行
    public bool CanExecute(object parameter) => _canExecute?.Invoke() ?? true;
    // 执行命令逻辑
    public void Execute(object parameter) => _execute.Invoke();
    // 手动触发命令状态更新
    public void RaiseCanExecuteChanged() => CanExecuteChanged?.Invoke(this, EventArgs.Empty);
    }

代码逐行解析

1. 接口实现
public class RelayCommand : ICommand
  • 实现System.Windows.Input.ICommand接口,这是WPF命令机制的基础,必须实现ExecuteCanExecuteCanExecuteChanged三个成员。
2. 核心委托字段
private readonly Action _execute;
private readonly Func<bool> _canExecute;
  • _execute:类型为
posted @ 2025-11-15 19:37  yangykaifa  阅读(49)  评论(0)    收藏  举报