Eu tenho um em Menuque cada MenuItemhierarquia tem sua Commandpropriedade definida como RoutedCommanddefinida. O associado CommandBindingfornece um retorno de chamada para a avaliação da CanExecutequal controla o estado ativado de cada um MenuItem.
Isso quase funciona. Os itens de menu aparecem inicialmente com os estados ativados e desativados corretos. No entanto, quando os dados que meu CanExecuteretorno de chamada usa são alterados, preciso do comando para solicitar novamente um resultado do retorno de chamada para que esse novo estado seja refletido na interface do usuário.
Não parece haver quaisquer métodos públicas sobre RoutedCommandou CommandBindingpara esta.
Observe que o retorno de chamada é usado novamente quando clico ou digito no controle (acho que foi acionado na entrada porque o mouse não causa a atualização).