[RelayCommand在通过异步lambda传递参数时无法执行

问题描述 投票:0回答:1

我有以下有效的命令:

private ICommand _AddNewCommand;
public ICommand AddNewCommand
{
    get
    {
        if (_AddNewCommand == null)
        {
            _AddNewCommand = new RelayCommand(async () =>
                                              {
                                                  await AddNewAsync();
                                              }, AddNewCommand_CanExecute);
        }
        return _AddNewCommand;
    }
}

根据AddNewCommand_CanExecute方法的结果正确启用/禁用了绑定到此按钮的按钮。

但是,如果我想将某些参数传递给我的AddNewAsync()方法,我会这样做:

 _AddNewCommand = new RelayCommand<object>(async obj =>
                                          {
                                              await AddNewAsync(obj);
                                          }, AddNewCommand_CanExecute());

注意,AddNewCommand_CanExecute必须更改为AddNewCommand_CanExecute()

但是,当我这样做时,即使AddNewCommand_CanExecute()应该返回false(鉴于两者之间没有变化,绑定按钮也总是启用的。)>

这是怎么回事?

我有以下有效的命令:private ICommand _AddNewCommand;公共ICommand AddNewCommand {获取{如果(_AddNewCommand == null){_AddNewCommand = new ...

c# wpf
1个回答
0
投票

我认为此会议视频可以帮助您Common Async/Await Mistakes

© www.soinside.com 2019 - 2024. All rights reserved.