2012-02-15 10 views
8

Per impostazione predefinita, l'expander ha un pulsante di attivazione allineato a sinistra, ma nella mia app WPF voglio il pulsante di commutazione sul lato destro dell'intestazione senza l'aiuto di Expression Blend. semplicemente XAML e/o C#. Il mio expander contiene uno stackpanel orientato verticalmente che ha etichette come figlio.Come mettere Expander ToggleButton sulla destra

Sono andato per la sua parte ma here dice "Il controllo Expander non ha parti nominate".

Ho trovato un esempio here. Ma sovrascrive lo stile di espansione predefinito.

Penso che l'immagine allegata dovrebbe trasmettere ciò che voglio. Come fare. Qualsiasi collegamento sarebbe utile.

enter image description here

risposta

9

Utilizzare questa:

<Expander Header="Expander1" FlowDirection="RightToLeft"> 
    <TextBlock FlowDirection="LeftToRight"> 
    </TextBlock> 
</Expander> 

aggiungere i tuoi contenuti in TextBlock, se non si vuole l'intero contenuto di essere destra a sinistra.

+0

@NikhilAgrawal Come ho detto, si dovrebbe mettere il contenuto all'interno di un contenitore LeftToRight ('TextBlock' nel mio esempio). Puoi impostare 'FlowDirection' di 'StackPanel' su' LeftToRight'. –

+0

Ho fatto quello che mi hai suggerito. Il mio expander contiene uno stackpanel orientato verticalmente (Orientation = Vertical) che ha etichette come figlio (Aggiunto in modo dinamico). Ho impostato l'expander FlowDirection = "RightToLeft" e lo stackpanel FlowDirection = "LeftToRight" e ha funzionato. Grazie –

15

c'è un trucco che può aiutare

<Expander Header="My Expander" 
      FlowDirection="RightToLeft"> 
    <Expander.HeaderTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType=Expander}, Path=Header}" 
         Width="{Binding RelativeSource={RelativeSource AncestorType=Expander}, Path=ActualWidth}" 
         Margin="-30,0,0,0" 
         FlowDirection="LeftToRight"> 
      </TextBlock> 
     </DataTemplate> 
    </Expander.HeaderTemplate> 
</Expander> 
+0

Puoi spiegare come la tua risposta è diversa dalla risposta di MD.Unicorn? –

+1

Sì. Con la sua risposta il testo dell'intestazione sarà allineato a destra insieme al ToggleButton. Nella mia soluzione il testo dell'intestazione è ancora allineato e solo ToggleButton viene spostato da sinistra a destra. – Nitesh

+0

Anche se l'interrogante non si aspettava questa risposta o probabilmente non ne aveva davvero bisogno, mi ha aiutato con il mio problema. Saluti! –