如果选择了列表项,则实现CanExecute for按钮以启用

我是MVVM的新手,我想创建一个简单的命令按钮,如果选择了列表中的任何项目,该按钮将启用,并将所选列表项添加到收藏夹列表中。这是我的AddCommand实现:

class AddFavCommand : ICommand
{
    private readonly Action _favAction;
    private readonly bool _canExecute;

    public AddFavCommand()
    {
    }

    public AddFavCommand(Action favAction, bool canExecute)
    {
        _favAction = favAction;
        _canExecute = canExecute;
    }

    public bool CanExecute(object parameter)
    {
        return _canExecute;
    }

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

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

在我的视图模型中,我具有公共属性AddFavCommand以便与我的视图进行绑定:

    private AddFavCommand _addFavCommand;
    private bool _canAddFavExecute;

    public ICommand AddFavCommand
    {
        get
        {
            if (_addFavCommand == null)
            {
                _addFavCommand = new AddFavCommand(AddFav, _canAddFavExecute);
            }
            return _addFavCommand;
        }
    }

现在我有一个简单的功能,只是检查命令是否有效:

    private void AddFav()
    {
        MessageBox.Show("Add");
    }

因此,此部分无需实现canExecute属性即可完美工作。但是现在我希望在未选择列表中的列表项时禁用按钮。我有一个财产:

CurrentItem

绑定到“列表项”,如果未选择该项,则为null。我的问题是当未选择项目时如何触发按钮被禁用。我试图添加:

   private void AddFav()
    {
        MessageBox.Show("Add");
        _canAddFavExecute = CurrentItem != null; // to my function, but my button always stays disabled.  
    }

谢谢

尼丁

如果创建了自己的委托命令,则必须提供CanExecute如下所示委托,并且可以CanExecuteChanged在命令中将其注册到事件中。

_addFavCommand = new AddFavCommand(AddFav, CanExecuteCommand);

public bool CanExecuteCommand(object parameter)
{
    return CurrentCommand != null;
}

并且从的设置者中,CurrentCommand您将不得不canexecutechanged为命令引发事件。在您的情况下,您已将布尔值提供给命令一次,因此始终将其禁用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

满足条件时CanExecute()不启用按钮

来自分类Dev

如果填充了文本框,则启用按钮

来自分类Dev

如果输入已更改,则启用操作按钮

来自分类Dev

如果输入不为空,则启用禁用按钮

来自分类Dev

如果填充了文本框,则启用按钮

来自分类Dev

如果启用或禁用,请检查喜欢按钮

来自分类Dev

如果新记录存在,则启用编辑按钮

来自分类Dev

启用带有jstl的按钮,选择“何时”

来自分类Dev

将绑定按钮启用到ComboBox选择

来自分类Dev

选择单选组时未启用按钮

来自分类Dev

选择 li 上的禁用和启用按钮

来自分类Dev

使用jQuery启用禁用的单选按钮列表

来自分类Dev

WPF MVVM Light启用按钮(如果选择了数据网格行)

来自分类Dev

如果在GridView中选择了项目,如何启用按钮

来自分类Dev

如果选择了文件,如何启用按钮Angular JS?

来自分类Dev

如果列表视图项被选中,则启用按钮

来自分类Dev

Android-如果选中了单选按钮,如何启用按钮?

来自分类Dev

根据AngularJS中的单选按钮选择启用/禁用按钮

来自分类Dev

如果文本字段已填写,请设置启用按钮

来自分类Dev

如果动态表没有行,则启用/禁用提交按钮

来自分类Dev

如果用户单击复选框,如何启用按钮

来自分类Dev

如果选中两个RadioGroup,如何启用按钮?

来自分类Dev

如果文本字段已填写,请设置启用按钮

来自分类Dev

jquery - 如果文本框充满数字,启用按钮?

来自分类Dev

仅在选择单选按钮后启用编辑框

来自分类Dev

CSS按钮图像是否在“选择/启用”上更改?

来自分类Dev

选中单选按钮时启用HTML选择,反之亦然

来自分类Dev

选择复选框时启用提交按钮

来自分类Dev

禁用div,仅在选择单选按钮选项时启用

Related 相关文章

  1. 1

    满足条件时CanExecute()不启用按钮

  2. 2

    如果填充了文本框,则启用按钮

  3. 3

    如果输入已更改,则启用操作按钮

  4. 4

    如果输入不为空,则启用禁用按钮

  5. 5

    如果填充了文本框,则启用按钮

  6. 6

    如果启用或禁用,请检查喜欢按钮

  7. 7

    如果新记录存在,则启用编辑按钮

  8. 8

    启用带有jstl的按钮,选择“何时”

  9. 9

    将绑定按钮启用到ComboBox选择

  10. 10

    选择单选组时未启用按钮

  11. 11

    选择 li 上的禁用和启用按钮

  12. 12

    使用jQuery启用禁用的单选按钮列表

  13. 13

    WPF MVVM Light启用按钮(如果选择了数据网格行)

  14. 14

    如果在GridView中选择了项目,如何启用按钮

  15. 15

    如果选择了文件,如何启用按钮Angular JS?

  16. 16

    如果列表视图项被选中,则启用按钮

  17. 17

    Android-如果选中了单选按钮,如何启用按钮?

  18. 18

    根据AngularJS中的单选按钮选择启用/禁用按钮

  19. 19

    如果文本字段已填写,请设置启用按钮

  20. 20

    如果动态表没有行,则启用/禁用提交按钮

  21. 21

    如果用户单击复选框,如何启用按钮

  22. 22

    如果选中两个RadioGroup,如何启用按钮?

  23. 23

    如果文本字段已填写,请设置启用按钮

  24. 24

    jquery - 如果文本框充满数字,启用按钮?

  25. 25

    仅在选择单选按钮后启用编辑框

  26. 26

    CSS按钮图像是否在“选择/启用”上更改?

  27. 27

    选中单选按钮时启用HTML选择,反之亦然

  28. 28

    选择复选框时启用提交按钮

  29. 29

    禁用div,仅在选择单选按钮选项时启用

热门标签

归档