2010-11-14 32 views
3

J'essaie de styler un en-tête TabItem, en utilisant un chemin pour définir la forme de l'en-tête.WPF: Est-il possible d'adapter une taille de chemin à la taille de la mise en page, mais en l'étirant toujours?

Je suis coincé dans un problème que je ne peux pas sembler résoudre:

Si je mets le chemin extensible propriété « None », il ne sera pas l'échelle si le texte dans mon TabItem-tête est longue .

Si je mets le chemin extensible propriété à « remplissage », il étirer tellement que chaque TabItem en-tête sera la même largeur que la TabControl - qui signifie qu'une très large TabItem en-tête par ligne ...

Savez-vous un moyen d'étirer le chemin vers la mise en page (en fonction du contenu TabItemHeader), mais pas plus?

Je serais très heureux si quelqu'un peut m'aider à ce sujet ... ça a été un ennuyeux pendant que je suis à la recherche d'une solution.

Merci :-)

+0

Veuillez poster un code ... –

Répondre

5

Il est difficile quand vous n'ajoutez pas exemple de code, mais dire que votre HeaderTemplate ressemble ci-dessous, vous pouvez lier la largeur du chemin du ActualWidth du TextBlock.

<TabItem.HeaderTemplate> 
    <DataTemplate> 
     <Border x:Name="grid"> 
      <Grid> 
       <Path Data="..." 
         Stretch="Fill" 
         Width="{Binding ElementName=grid, Path=ActualWidth}" /> 
       <TextBlock Name="textBlock" 
          Margin="4" 
          FontSize="15" 
          Text="{Binding}"/>         
      </Grid> 
     </Border> 
    </DataTemplate> 
</TabItem.HeaderTemplate> 
+0

Hey Meleak! Exactement ce dont j'avais besoin! Je vous remercie :-) –

1

Mais attention aux performances de rendu! La liaison à ActualWidth et ActualHeight entraînera des erreurs de liaison tant que l'interface utilisateur n'a pas été restituée. Et les erreurs de liaison coûtent cher ... La meilleure façon d'éviter cela est de configurer la liaison dans le code lorsque SizeChanged est appelé. C'est le premier moment après la mesure et le dimensionnement a été terminé.