gpt4 book ai didi

wpf - CanExecuteChanged 和 CommandManager.RequerySuggested 的实际任务是什么?

转载 作者:行者123 更新时间:2023-12-03 07:49:56 25 4
gpt4 key购买 nike

我从 Josh Smith 的 MVVM tutorial 得到以下代码.

任何人都可以快速解释这段代码的实际作用吗?

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

我无法理解两件事:
  • CanExecuteChanged 是什么意思事件做什么?
  • CommandManager.RequerySuggested 是什么意思做?

  • 以上代码来自 RelayCommand来自 here 的类(class).

    最佳答案

  • CanExecuteChanged通知绑定(bind)到 Button 的任何命令源(如 MenuItemICommand ) CanExecute 返回的值已经改变。命令源关心这一点,因为它们通常需要相应地更新其状态(例如,如果 Button 返回 CanExecute()false 将禁用自身)。
  • CommandManager.RequerySuggested每当 CommandManager认为某些事情发生了变化,会影响命令的执行能力。例如,这可能是焦点的改变。事实证明,这个事件触发了很多。

  • 因此,本质上,这段代码所做的是确保每当命令管理器认为命令的执行能力发生变化时,该命令将引发 CanExecuteChanged即使它实际上并没有改变。

    我实际上不喜欢这种实现 ICommand.CanExecuteChanged 的方法- 感觉很懒惰,并不完全可靠。我更喜欢更细粒度的方法,其中命令公开一个方法(例如 RaiseCanExecuteChanged() )你可以调用 raise CanExecuteChanged ,然后你在适当的时候从你的 View 模型中调用它。

    例如,如果您有一个删除当前选定客户的命令,它将具有 CanExecute()返回 true 的处理程序只有选择客户。因此,您将调用 RaiseCanExecuteChanged whenever the selected customer changes.

    关于wpf - CanExecuteChanged 和 CommandManager.RequerySuggested 的实际任务是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6634777/

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