Я почти уверен, что мне не хватает проблемы вашего вопроса, но у меня работает следующий код:
<Window.Resources>
<Image x:Key="test" Source="/Images/ChangeCase.png"/>
</Window.Resources>
<!-- Using a Resource for the Content -->
<Button Width="100" Height="20" Content="{StaticResource test}"/>
<!-- Specifying the Content directly -->
<Button Width="100" Height="20">
<Image Source="/Images/ChangeCase.png"/>
</Button>
Плюс я заметил ошибку в вашем коде:
<Button Content="{{StaticResource closeImage}" [...]
должно быть:
<Button Content="{StaticResource closeImage}" [...]
Я не совсем понимаю, что делает твой стиль. Почему свойство Content установлено в StaticResource, если вы хотите указать изображение с помощью стиля?
Edit:
Хорошо, я попробовал твой стиль, и он также работает для меня.
<Style x:Key="WindowToolboxButton" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="grid" Height="15" Width="15">
<Border x:Name="border" CornerRadius="2,2,2,2" BorderBrush="#FFBBCDD2" BorderThickness="1" Opacity="0" Margin="0">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF82A3AC" Offset="1"/>
<GradientStop Color="#7FCDD9DC"/>
</LinearGradientBrush>
</Border.Background>
</Border>
<Image x:Name="image" Source="/Images/ChangeCase.png" Stretch="None" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Button Width="100" Height="20" Content="Test" Style="{DynamicResource WindowToolboxButton}"/>
Изображение показано. Однако я не вижу вашей границы из-за того, что для opacity-prop задано значение 0.
Содержимое, которое передается непосредственно кнопке, переопределяется стилем.
Может быть, что-то не так с вашим изображением? Вы установили его свойство сборки на Resource ?