Mon ControlTemplate global (App.xaml
) pour Button
ne souhaite pas remplacer la propriété Foreground
par sa couleur noire par défaut. Cela semble être un problème relativement commun, mais j'ai essayé diverses solutions, y compris la définition du BasedOn
à null
comme described in this question.WPF Button ControlTemplate ne remplace pas Inherited Foreground
Mon code est ci-dessous, et vous pouvez voir que j'ai essayé d'indiquer explicitement la couleur de premier plan à la fois sur le Grid
et le ContentPresenter
. Pourtant, la couleur reste noire. Snoop me dit qu'il est hérité en tant que défaut, mais ne semble pas dire d'où, et montre le ContentPresenter
parent ayant TextElement.Foreground
mis à la bonne couleur.
Y a-t-il quelque chose dans ce code que je devrais paramétrer? Ai-je manqué un élément ou une propriété?
<Style TargetType="Button">
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid x:Name="grid" TextBlock.Foreground="#FFD3D3D2">
<Border x:Name="border" Background="Transparent" BorderBrush="#FF5C7999" BorderThickness="2" CornerRadius="{Binding RelativeSource={RelativeSource TemplatedParent},Path=ActualHeight,Converter={StaticResource HalfConverter}}" Padding="10">
<ContentPresenter Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0" TextBlock.Foreground="#FFD3D3D2">
</ContentPresenter>
</Border>
</Grid>
...
Je ne peux pas reproduire le problème en fonction de ce que vous avez ici. Dans quel contexte le bouton apparaît-il? Qu'est-ce que vous utilisez pour 'Content'? –
En fait, je * peux * le reproduire: '' me donne un "Foo" gris. '' obtient moi un noir "Foo". –
Je peux mettre un 'Style' implicite pour' Label' dans 'ControlTemplate.Resources', qui s'appliquera au contenu' Label'. –