将参数传递给ICommand
我有一个简单的按钮,在执行时使用命令,这一切都正常,但我想在单击按钮时传递一个文本参数。
我认为我的XAML没问题,但我不确定如何编辑我的RelayCommand
类来接收参数:
public class RelayCommand : ICommand { private readonly Action _handler; private bool _isEnabled; public RelayCommand(Action handler) { _handler = handler; } public bool IsEnabled { get { return _isEnabled; } set { if (value != _isEnabled) { _isEnabled = value; if (CanExecuteChanged != null) { CanExecuteChanged(this, EventArgs.Empty); } } } } public bool CanExecute(object parameter) { return IsEnabled; } public event EventHandler CanExecuteChanged; public void Execute(object parameter) { _handler(); } }
将Action
更改为Action
以便它需要一个参数(可能只是Action
是最简单的)。
private readonly Action
然后简单地传递参数:
public void Execute(object parameter) { _handler(parameter); }
您可以简单地执行此操作(无需更改RelayCommand或ICommand):
private RelayCommand _addPhoneCommand; public RelayCommand AddPhoneCommand { get { if (_addPhoneCommand == null) { _addPhoneCommand = new RelayCommand( (parameter) => AddPhone(parameter), (parameter) => IsValidPhone(parameter) ); } return _addPhoneCommand; } } public void AddPhone(object parameter) { var text = (string)parameter; ... } public void IsValidPhone(object parameter) var text = (string)parameter; ... }
你可以这样做
public ICommand AddPhoneCommand { get { return new Command((x) => { if(x != null) { AddPhone(x); } }; } }
然后,当然有你的AddPhone
:
上述就是C#学习教程:将参数传递给ICommand分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
public void AddPhone(string x) { //handle x }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1007905.html