2009-08-25 8 views
0

Actuellement, je référence le thème Aero dans mon fichier App.xml. Dans le fichier main.xml, j'utilise des expandeurs pour afficher le contenu dans une application redimensionnable. (Pour cet exemple, j'ai limité la largeur à 500)Comment puis-je référencer le cercle de boutons bascule et remplacer l'alignement vertical du thème Aero Expander?

Le contenu de l'en-tête d'extension sera généralement court, mais il permet jusqu'à 500 caractères. Selon la taille de la fenêtre (600 pixels par défaut), le contenu peut s'enrouler (étendant ainsi l'en-tête de l'extension vers le bas). C'est bien, mais le bouton bascule (une flèche cercle/w) est positionné pour VerticalAlignment = centre de ce que je peux dire.

J'ai besoin d'un moyen de remplacer ce VerticalAlignment dans un style sans re-créer le modèle Aero pour l'Expander. Je ne peux tout simplement pas sembler faire référence aux objets cercle et flèche. J'ai essayé d'outrepasser Toggle Button, sans aucune chance.

Comme vous pouvez le voir ci-dessous, je peux remplacer certains aspects de l'Expander Aero. J'ai juste besoin de ce petit coup de pouce pour obtenir le Toggle Button Circle et les objets Arrow pour changer l'alignement vertical.

Merci

Exemple de code suit:

<Window.Resources> 
    <Style TargetType="{x:Type Expander}" BasedOn="{StaticResource {x:Type Expander}}"> 
     <Setter Property="Foreground" Value="White" /> 
     <Setter Property="Background" Value="#464646" /> 
     <Setter Property="Width" Value="Auto" /> 
     <Setter Property="Margin" Value="1,0,1,0" /> 
     <Setter Property="IsExpanded" Value="False" /> 
    </Style> 
</Window.Resources> 

<Expander ContextMenu="{StaticResource cMnu}" Width="auto"> 
    <Expander.Header> 
     <StackPanel Orientation="Horizontal" Width="auto" Margin="0"> 
      <TextBlock Width="65">Normal</TextBlock> 
      <TextBlock Width="80">Open</TextBlock> 
      <TextBlock Width="80">10/31/2009</TextBlock> 
      <TextBlock TextWrapping="Wrap" Width="500"> 
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
      Aliquam ultrices auctor magna, sit amet commodo ipsum accumsan eu. 
      Sed a mollis felis. Nam ullamcorper augue vel mauris consequat imperdiet. 
      Nunc in augue mauris. 
      Quisque metus tortor, porttitor nec auctor id, mollis nec ipsum. 
      Suspendisse eget ipsum vitae lectus fermentum porta. 
      Aliquam erat volutpat. 
      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. 
      Phasellus congue dui ac arcu eleifend a amet. 
      </TextBlock> 
     </StackPanel> 
    </Expander.Header> 
</Expander> 

Répondre

1

Si vous regardez le default template pour la Expander, vous pouvez voir pourquoi aucun de vos setters propriété travaillent:

<Grid> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="20" /> 
    <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 
    <ToggleButton IsChecked="{Binding Path=IsExpanded,Mode=TwoWay, 
       RelativeSource={RelativeSource TemplatedParent}}" 
       OverridesDefaultStyle="True" 
       Template="{StaticResource ExpanderToggleButton}" 
       Background="{StaticResource NormalBrush}" /> 
    <ContentPresenter Grid.Column="1" 
        Margin="4" 
        ContentSource="Header" 
        RecognizesAccessKey="True" /> 
</Grid> 

Le ToggleButtonVerticalAlignment est ce que vous cherchez, et il n'y a pas de setters pour cela.

Il me semble qu'il y a aucun moyen de changer cette propriété d'alignement à travers le Style. Vous devez fournir un nouveau modèle.

Questions connexes