2010-05-12 24 views
0

Je veux un Expander qui se développe/réduisent son contenu seulement quand l'utilisateur clique sur l'icône en-tête. (Au lieu de cliquer sur l'en-tête entier.)Personnalisation de WPF Expander; Faire seulement l'icône cliquable pas l'en-tête entier

Dois-je redéfinir le contrôle Template pour cela? À quoi ressemblerait-il?
Où puis-je trouver les modèles/styles standard pour les contrôles?

Merci pour votre temps.

+0

Je crois que c'est un double: http://stackoverflow.com/questions/1396153/preventing-a-wpf-expander-from-expanding-when-header-is-clicked. Vous devriez être capable de trouver votre solution là-bas. :) –

Répondre

0

J'ai posté une solution à ma question here (même lien que dans le commentaire de Ben).

2

Il existe une solution XAML beaucoup plus simple que la modification de modèles. N'utilisez simplement PAS la propriété d'en-tête d'Expander dans ce cas. Au lieu de cela, couvrir l'expandeur avec votre propre TextBlock stylé.

<Application.Resources> 
    <Style x:Key="ExpanderHeader" TargetType="{x:Type TextBlock}"> 
     <Setter Property="Height" Value="22" /> 
     <Setter Property="Margin" Value="21,0,0,0" /> 
     <Setter Property="Padding" Value="9,3,0,0" /> 
     <Setter Property="HorizontalAlignment" Value="Stretch" /> 
     <Setter Property="VerticalAlignment" Value="Top" /> 
    </Style> 
</Application.Resources> 

<Grid> 
    <Expander> 
     <TextBlock Text="I am some content. I have disowned my default header." Margin="10,5" /> 
    </Expander> 
    <TextBlock Text="I'm filling in for the default header. You'll like me better anyway." 
       Style="{StaticResource ResourceKey=ExpanderHeader}"/> 
</Grid>