Thanks for the suggestion. Before I go to any great length to do some refactoring, I thought I'd give your earlier suggestion a try. I now have my menu item's CommandParameter property bound to an object that derives from ICheckableCommandParameter. However, in the CanExecute function of the command, the CanExecuteRoutedEventArgs Parameter property is still just the default CheckableCommandParameter, NOT the derived command parameter I supplied in the CommandParameter binding. I do see the derived command parameter being passed as the Parameter property in the Execute function, as I would expect.
I suppose there's code in the control's command binding code to inspect the CommandParameter object to see if the object is or derives from ICheckableCommandParameter. If it is or derives from it, then it will use the CommandParameter as is, and if not, it will create a default CheckableCommandParameter object instead?
Thanks again for the assistance.