Como alguém "desabilita" um botão no WPF usando o padrão MVVM?

Estou tentando entender o WPF e o MVVM e tenho feito bons progressos. O lado WPF e MVVM está indo bem.

No entanto, o lado XAML e a ligação de dados são outra história :)

Como eu desabilitaria um botão?

Por exemplo, eu tenho uma propriedade CanClose no meu modelo de exibição que determina se o aplicativo pode ou não ser fechado no momento. Se um segmento de trabalho estiver desativado, alguma coisa será configurada como false e eu gostaria de esmaecer o botão ou desabilitar visualmente o botão Fechar por meio de algum tipo de ligação.

Como eu faria isso?

Obrigado!

Editar -

Pena que só posso aceitar uma resposta.

Essas duas respostas me ajudaram tremendamente. No post de Kent, ele deu um passo adiante ao explicar por que você deveria implementar uma infraestrutura de comando em seu aplicativo em vez de desabilitar um botão da maneira que eu havia perguntado:

Como alguém "desabilita" um botão no WPF usando o padrão MVVM?

E a resposta para minha pergunta original:

Como alguém "desabilita" um botão no WPF usando o padrão MVVM?