This is something not supported by the Prism’s DelegateCommand implementation out-of-the-box. That said, I think it might be achieved if you provide your own command class by implementing ICommand interface. This way,
you would make accessible a CanExecuteMethod property, which can be updated with the method of you choice at anytime.
In addition, Globally Available Commands is the recommended approach by Prism, that could give you the ability of making your commands available, both in a module
and cross-module. It might help you as this is not strictly necessary to use CompositeCommands, so you could provide your own implementation by exposing 4 instances of your custom ICommand over there. The implementation could be similar
to the following code lines:
public static class GlobalCommands
public static ChangeableCanExecuteCommand OpenCommand = new MyCustomCommand(myOpenMethod);
public static ChangeableCanExecuteCommand AddCommand = new MyCustomCommand(myAddMethod);
public static ChangeableCanExecuteCommand EditCommand = new MyCustomCommand(myEditMethod);
public static ChangeableCanExecuteCommand DeleteCommand = new MyCustomCommand(myDeleteMethod)
Additionally, take into account that if you have two of your editors open at the same time and you switch between them, you would need to update the CanExecuteMethod property and call the RaiseCanExecuteChanged method.
Please let me know if this helps.