Используйте триггер в стиле изображения. (Естественно было бы поставить его в стиле Button, но стиль Button не может легко повлиять на изображение по досадным техническим причинам. Это можно сделать в контрольной таблице Button Button, но это слишком много для того, что вы хотите здесь.)
<Button>
<Image Source="something.png">
<Image.Style>
<Style TargetType="Image">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.5" />
</Trigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</Button>
Примечание мы пользуемся здесь тот факт, что изображение будет отключено, когда кнопка отключена, так что мы можем вызвать непосредственно на собственность IsEnabled изображения. В других случаях свойство Button, которое мы хотим активировать, может не наследоваться Image; в этом случае нам нужно использовать DataTrigger с RelativeSource FindAncestor для привязки к содержащей кнопке.
Не удалось сделать эту работу. Это работает для меня: http://stackoverflow.com/questions/4532943/icommand-canexecute-can-not-disable-button-with-image-content/11126571#11126571 – aeinstein