如果您想继续使用 MVVMLight 框架中的 RelayCommand,可以考虑使用其他 MVVM 框架,如 Prism、MVVMCross、Caliburn.Micro 等。这些框架都支持 RelayCommand,并且提供更多的功能和优化。

另外,您也可以自己实现一个简单的 RelayCommand,以便在不使用 MVVMLight 框架的情况下使用。以下是一个简单的实现示例:

public class RelayCommand : ICommand
{
    private readonly Action _execute;
    private readonly Func<bool> _canExecute;

    public RelayCommand(Action execute, Func<bool> canExecute = null)
    {
        _execute = execute ?? throw new ArgumentNullException(nameof(execute));
        _canExecute = canExecute;
    }

    public bool CanExecute(object parameter)
    {
        return _canExecute?.Invoke() ?? true;
    }

    public void Execute(object parameter)
    {
        _execute();
    }

    public event EventHandler CanExecuteChanged
    {
        add { CommandManager.RequerySuggested += value; }
        remove { CommandManager.RequerySuggested -= value; }
    }
}

使用示例:

public class ViewModel
{
    public ICommand MyCommand { get; }

    public ViewModel()
    {
        MyCommand = new RelayCommand(ExecuteMyCommand, CanExecuteMyCommand);
    }

    private bool CanExecuteMyCommand()
    {
        // TODO: Add your own logic here
        return true;
    }

    private void ExecuteMyCommand()
    {
        // TODO: Add your own logic here
    }
}
MVVMLight RelayCommand 替代方案:继续使用或自定义实现

原文地址: https://www.cveoy.top/t/topic/mRbf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录