阻止WPF CommandManager执行CanExecute

时间:2010-10-29 15:09:02

标签: wpf

是否可以阻止WPF CommandManager执行附加的CanExecute委托?

我有一个Unhandled Exception Handler例程,它为用户显示一个错误窗口。我现在有一种情况,即作为CanExecute链的一部分抛出异常。这将调用显示窗口的异常处理程序。此时,CommandManager启动并重新查询CanExecute,抛出另一个异常,调用处理程序,显示另一个窗口,重新查询CanExecute,抛出另一个异常......等等。

我不知何故需要阻止重新运行CanExecute。我试图简单地忽略处理程序中的后续错误,但这意味着错误窗口中的异常信息是空白的。

1 个答案:

答案 0 :(得分:0)

最好的资源是来自具有ICommand InterfaceCanExecuteChanged Event。订阅该事件的操作将被通知以禁用其自身。

目前还不清楚你的结构设置是什么,但我猜测原始操作可以在启动过程时触发此事件,然后在完成时再次触发事件以宣告已处理的其他命令可以运行。

原始命令操作的示例,用于在打开命令之前通知其他人检查状态:

private void DoTheCommand()
{
    _isProcessingCabExecute = false;       // Turn off all related for this 
                                           // command (is Execute).

    _opCommand.RaiseCanExecuteChanged();   // Inform all subscribed to check status 
                                           // and disable where possible.

    // The operation

    _isProcessingCabExecute = true;        // All done turn it back on
    _opCommand.RaiseCanExecuteChanged(); // Resume operations.
}
相关问题