J'ai un Style
standard appliqué à travers mon application qui spécifie un style de survol qui change le contenu du texte du blanc au noir. Pour y parvenir, j'ai essayé de modifier le modèle de bouton, en supprimant le ContentPresenter
et en le remplaçant par un TextBlock
. Cependant, cela signifie que je ne peux pas avoir un contenu mixte tels que:Styles de survol sur les boutons WPF avec contenu mixte
<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>
Pour améliorer la situation, je mets ensuite les boutons ContentPresenter
de retour, ainsi que sur mon (texte seulement) spécifié un ContentTemplate
comme celui-ci:
<Button IsDefault="True" Content="Text only Button"
ContentTemplate="{StaticResource TextButtonTemplate}"
Command="{Binding ...}"
CommandParameter="{...}" />
Et avec un Template
défini comme ci-dessous. Ce modèle ne fonctionnera que pour Button
avec du contenu textuel, avec d'autres modèles définis comme nécessaires pour le contenu mixte.
<DataTemplate x:Key="TextButtonTemplate">
<TextBlock Text="{TemplateBinding Content}"
Foreground="{Binding Path=Foreground,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Button}}" />
</DataTemplate>
Est-ce que quelqu'un sait s'il y a un moyen de l'améliorer en gardant le style de passage de souris désiré, sans avoir à définir de modèles personnalisés?
Merci pour votre réponse. Je n'avais rien fait avec des propriétés héritées auparavant. Malheureusement, mes TextBlocks définissent leurs propres couleurs, car je ne veux pas qu'ils utilisent le système par défaut. Je peux devoir poster une nouvelle question sur celui-là ..... –
Ne fonctionne pas pour moi. – flq