gpt4 book ai didi

wpf - CanExecuteChanged 有什么用?

转载 作者:行者123 更新时间:2023-12-03 14:39:36 24 4
gpt4 key购买 nike

我可以使用 CanExecuteChanged 更改“可以执行”条件吗?

或者……它的用途是“什么”?

最佳答案

不,您不能使用它来更改可执行状态。它是参与ICommand 的事件和对象模式可以选择收听此事件,例如按钮可以使用此事件来知道何时重新查询命令状态(通过调用 can execute 方法)以设置其启用状态。

为了使 can execute 模式有用,需要有一些东西可以用来引发事件。棱镜的DelegateCommand有一个可以调用的方法来手动引发此事件,因此如果订阅者选择了该模式,他们将重新查询 can execute 方法。

  • 将命令分配给按钮。
  • 订阅的按钮可以执行更改的事件。
  • 按钮执行可以执行方法,它返回 false - 禁用按钮。
  • 您更改可以执行方法的状态取决于。
  • 您调用 raise 可以在 Prism 命令上执行更改。
  • 可以执行更改的事件被引发。
  • 按钮事件处理程序触发。
  • 按钮调用命令可以执行方法 - 按钮启用。

  • 示例

    在以下基于 Prism 的示例中,我们更改 SaveCommand CanExecute 的状态在执行保存命令时从 false 变为 true。调用 RaiseCanExecuteChanged将导致 CanExecuteChanged要引发的事件,客户可以调用 CanExecute方法。实际上,这会生成一个绑定(bind)到 SaveCommand 的保存按钮。将其状态从启用更改为禁用,然后再次启用。
    public class BlingViewModel
    {
    private DelegateCommand<object> _saveCommand;
    private bool _canSaveExecute = true;

    public ICommand SaveCommand
    {
    get
    {
    if (_saveCommand == null)
    {
    _saveCommand = new DelegateCommand<object>
    (
    executeMethod: _ => Save()
    ,
    canExecuteMethod: _ => _canSaveExecute
    );
    }
    return _saveCommand;
    }
    }

    private void Save()
    {
    _canSaveExecute = false;
    _saveCommand.RaiseCanExecuteChanged();

    Console.WriteLine("Saving...");

    _canSaveExecute = true;
    _saveCommand.RaiseCanExecuteChanged();
    }
    }

    关于wpf - CanExecuteChanged 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4531360/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com