J'aimerais utiliser un tabcontrol comme navigation principale dans l'application que je travaille. Je voudrais donc rendre la police dans les en-têtes des Tabitems plus gros et lui donner une autre couleur de fond. Cependant, je fais <TabControl FontSize="18pt">
<TabItem Header="Tab 1">
<Button>Button 1</Button>
</TabItem>
</TabControl>
3 Réponses :
Définir l'en-tête code> en tant que commande explicite ( textblock code> ou
étiquette code> par exemple), sur lequel vous appliquez un style:
<TabControl FontSize="18pt">
<TabItem>
<TabItem.Header>
<TextBlock Style="{StaticResource tabHeaderStyle}">Tab 1</TextBlock>
</TabItem.Header>
<Button>Button 1</Button>
</TabItem>
</TabControl>
C'est à peu près ce dont j'ai besoin. Je m'attendais à ce que cela soit un peu plus facile, mais c'est néanmoins ce que je veux. Merci!
Vous devez repenser cela un peu. Vous ne pouvez pas simplement dire "n'hériter pas", car le contrôle doit hériter de ses valeurs de propriété de quelque part.
Ceci fonctionne: p>
<TabControl x:Name="Test" FontSize="36"> <TabControl.Resources> <Style TargetType="Button"> <Setter Property="FontSize" Value="{Binding ElementName=Test, Path=FontSize}"/> </Style> </TabControl.Resources> <TabItem Header="Test" FontSize="24"> <Button>Another test</Button> </TabItem> </TabControl>
Qu'entendez-vous par "repenser"? Je pense que mes revendications sont assez décentes ou non? Pourquoi une telle tâche de base ne peut-elle pas être facilitée par WPF? XAML est cool et tout sauf, j'ai parfois le sentiment que Microsoft sacrifie la facilité d'utilisation un peu trop.
Ce que je voulais dire par "repenser": votre question semble avoir comme prémisse que le bouton a une taille de police par défaut et que ce que vous voulez faire est de l'arrêter de hériter. Mais ce que vous voulez presque certainement vraiment que ce soit pour le bouton de continuer à hériter de ses propriétés, mais de quelque chose autre que son parent immédiat - de cette façon, si vous modifiez la taille de la police sur la fenêtre (par exemple), la taille du bouton changera également. La réponse de Thomas l'obtient (essentiellement) en tirant sur l'élément d'onglet de l'arbre d'héritage. Ma réponse le fait en donnant au bouton quelque chose de différent à hériter.
Merci pour l'explication, vous m'avez aidé un peu dans la compréhension du WPF. Je pense que j'ai libellé ma question mal. Je voulais juste que le manu principal (Tabcontrol) ait un regard complètement différent des commandes à l'intérieur. Ensuite, l'héritage est venu dans le chemin. J'ai donc essayé de trouver des réponses concernant l'héritage «désactivation» qui est la mauvaise manière évidente. Merci encore.
J'ai trouvé des aspects du WPF difficiles à apprendre précisément parce qu'il est impossible de progresser lorsque votre modèle mental de ce que cela fait est faux. La plupart des technologies que j'ai apprises sont plus prudentes; Si vous ne comprenez pas quelque chose, vous pouvez au moins obtenir le résultat A i> et voir comment vos idées sont courtes. Avec WPF, des choses fonctionnent sans faille ou cela ne fonctionne pas du tout.
Exemple d'en-têtes modèles pour chaque états: Les propriétés des polices de la teneur en en-tête ne sont pas accomplies dans la teneur en ongledControl.
<Style TargetType="{x:Type TabItem}"> <Setter Property="HeaderTemplate" Value="{DynamicResource TabItemGeneralTemplate.Normal}"/> <Style.Triggers> <Trigger Property="Selector.IsSelected" Value="True"> <Setter Property="Background" Value="White"/> <Setter Property="HeaderTemplate" Value="{DynamicResource TabItemGeneralTemplate.Selected}"/> </Trigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsMouseOver" Value="True"/> <Condition Property="Selector.IsSelected" Value="False"/> </MultiTrigger.Conditions> <Setter Property="Background" Value="White"/> <Setter Property="HeaderTemplate" Value="{DynamicResource TabItemGeneralTemplate.Hover}"/> </MultiTrigger> </Style.Triggers> </Style> ... <DataTemplate x:Key="TabItemGeneralTemplate.Selected"> <Label Content="{Binding}" Foreground="#FF343434" FontWeight="Bold"/> </DataTemplate> <DataTemplate x:Key="TabItemGeneralTemplate.Hover"> <Label Content="{Binding}" Foreground="{DynamicResource Background.Primary}"/> </DataTemplate> <DataTemplate x:Key="TabItemGeneralTemplate.Normal"> <Label Content="{Binding}" Foreground="#FF7C7C7C"/> </DataTemplate>