You will need to override the ControlTemplate for your button. How to do that?
- Create a new style
- In that style define the ControlTemplate
- ControlTemplate find the definition for the visual state named "Disabled"
- Change that so that it changes the image only, without greying out the entire button.
These are the relevant parts of your controls template
<ControlTemplate TargetType="Button">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<!-- other states go here -->
<VisualState x:Name="Disabled">
<Storyboard>
<DoubleAnimation Duration="0"
Storyboard.TargetName="DisabledImage"
Storyboard.TargetProperty="Opacity" To="1"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<!-- rest of the template goes here -->
</ControlTemplate>
The DisabledImage
you reference in the visual state manager then would need to cover the image displayed on an enabled button entirely, so that when disabled, only the greyed out image is visible to the user.