MVVMLight RelayCommand 替代方案:继续使用或自定义实现
如果您想继续使用 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
}
}
原文地址: https://www.cveoy.top/t/topic/mRbf 著作权归作者所有。请勿转载和采集!