WPF Réglage de la style par défaut sur un TextBlock remplace le style de l'Étiquette
Réglage de la style par défaut sur un TextBlock provoque le style de l'Étiquette et d'autres contrôles à définir en tant que bien. Cela se produit uniquement si vous mettez les styles dans les ressources de l'Application, lorsque je place le style dans la Fenêtre de ressources, tout est bien.
J'ai aussi constaté que le VS 2008 Designer et XamlPadX affichage de l'Étiquette que vous attendez, mais le problème se produit uniquement si vous exécutez l'application dans la vie réelle.
<Application x:Class="WpfApplication.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml">
<Application.Resources>
<ResourceDictionary>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="8"/>
</Style>
<Style x:Key="Title" TargetType="Label">
<Setter Property="FontSize" Value="32"/>
</Style>
</ResourceDictionary>
</Application.Resources>
</Application>
<Window x:Class="WpfApplication.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300"
Title="Window1"
Width="300">
<StackPanel>
<TextBlock Text="TextBlock No Style" Style="{x:Null}"/>
<Label Content="Label No Style" Style="{x:Null}"/>
<TextBlock Text="Default TextBlock"/>
<Label Content="Default Label" Style="{StaticResource Title}"/>
</StackPanel>
</Window>
Le code ci-dessus affiche:
TextBlock No Style - Default font size (As you would expect)
Label No Style - Size 5 font size (How did this happen?)
Default TextBlock - Size 5 font size (As expected by my style)
Default Label - Size 5 font size (How did this happen?)
OriginalL'auteur anon | 2010-02-05
Vous devez vous connecter pour publier un commentaire.
Oui, c'est normal; regarder le modèle par défaut de l'Étiquette, c'est juste un retrait TextBlock. Les Styles sont hérité, de sorte que le Label va définir la taille de la police à 32, mais alors le TextBlock du style de remplacer. Si vous venez d'avoir , il serait 5pt.
Edit: la façon dont je voudrais résoudre ce problème, est de créer un mannequin de sous-classe (c'est à dire une classe qui ne change rien) TextBlock appelé NormalText, puis style; de cette façon, vous n'aurez pas accidentellement ramasser les autres TextBlocks.
OriginalL'auteur Paul Betts