【问题标题】:Debugging CommandBinding's CanExecute调试 CommandBinding 的 CanExecute
【发布时间】:2009-11-27 07:30:59
【问题描述】:

我有一个带有Button 绑定到NavigationCommands.RefreshCommand 的用户控件。该命令的处理程序位于父控件中。处理程序的CanExecute 如下所示:

e.CanExecute = !IsConnecting; // IsConnecting is a Dependency Property

由于某种原因,Button 将保持禁用状态,直到我单击该窗口。

如果我单击 Button 并让它执行(这会导致 IsConnecting 暂时设置为 true),它将正确禁用该按钮,但不会启用该按钮,直到我在窗口(例如点击)。

我可以使用任何工具或技巧来尝试调试绑定到按钮的命令的 CanExecute 处理程序吗?

【问题讨论】:

    标签: .net wpf button commandbinding


    【解决方案1】:

    该按钮的 CanExecute 仅在 GUI 中发生某些事情时调用。由于 IsConnecting 在后台发生变化,因此 WPF 不会更新控件。

    强制 WPF 更新 CanExecute 调用CommandManager.InvalidateRequerySuggested

    【讨论】:

    • 我在 DataErrorInfo 索引方法中调用了 InvalidateRequerySuggest()。但是 CanExcecute 没有被再次调用。所以即使我的数据在 UI 上有效,按钮命令按钮也没有启用。
    猜你喜欢
    • 2021-07-24
    • 2015-09-04
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    相关资源
    最近更新 更多