Csharp/C#教程:将参数传递给ICommand分享


将参数传递给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 _handler; 

然后简单地传递参数:

 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

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐