У меня есть стандартное Button
Style
, примененное ко всему моему приложению, которое задает стиль наведения мыши, который изменяет текстовое содержимое с белого на черный. Чтобы добиться этого, я попытался изменить шаблон кнопки, удалив ContentPresenter
и заменив его на TextBlock
. Однако это означает, что я не могу иметь смешанный контент, такой как:
<Button
<Button.Content>
<StackPanel Orientation="Horizontal">
<Path Margin="3" Width="12.375" Height="9.70833" Canvas.Left="0" Canvas.Top="0"
Stretch="Fill" Fill="#FF115485"
Data="F1 M 18.8333,7.08333L 16.7083,4.91667L 10.5,10.5417L 8.52083,8.6875L 6.45833,10.4792L 10.4792,14.625L 18.8333,7.08333 Z "/>
<TextBlock Margin="3">Hello</TextBlock>
</StackPanel>
</Button.Content>
</Button>
Чтобы улучшить ситуацию, я вставил обратно ContentPresenter
, и на моих (только текстовых) кнопках указали ContentTemplate
, например:
<Button IsDefault="True" Content="Text only Button"
ContentTemplate="{StaticResource TextButtonTemplate}"
Command="{Binding ...}"
CommandParameter="{...}" />
И с Template
, определенным, как показано ниже. Этот шаблон будет работать только для Button
s с текстовым содержимым, с другими шаблонами, определенными как необходимые для смешанного содержимого.
<DataTemplate x:Key="TextButtonTemplate">
<TextBlock Text="{TemplateBinding Content}"
Foreground="{Binding Path=Foreground,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Button}}" />
</DataTemplate>
Кто-нибудь знает, есть ли способ, которым я могу улучшить это, сохраняя желаемый стиль наведения мыши, без необходимости определять пользовательские шаблоны?