O WPF encoraja strongmente o uso do padrão Command, que encapsula a lógica de um determinado pressionamento de botão ou item de menu em um objeto ICommand
, em vez de um manipulador de eventos code-behind. A parte interessante desses objetos é que, além do método padrão Execute
, também possui um método padrão CanExecute
, que determina se o botão está ativado ou não. Esse método pode ser usado tanto pela lógica de validação quanto pela camada de permissões para determinar se o elemento da interface do usuário está ativo.
Isso permite que a lógica de permissão seja "do lado do servidor", como parte da lógica de negócios, e tenha a visibilidade, "ativação" e funcionalidade do elemento da interface do usuário vinculados a ela usando vinculação de dados, Elementos da interface do usuário e ativando / desativando-os.
Isso se encaixa com a filosofia geral do WPF de usar o padrão MVVM, usando vinculações de dados entre a interface do usuário e os modelos de visualização back-end para ocultar toda aquela feia "checar o nível de permissão e definir a propriedade do botão adequadamente".