2012-02-15 23 views
8

De forma predeterminada, el expansor tiene un botón de alternar alineado a la izquierda pero en mi aplicación WPF quiero activar el botón en el lado derecho del encabezado sin la ayuda de Expression Blend. simplemente XAML y/o C#. Mi expansor contiene un panel de distribución orientado verticalmente que tiene etiquetas como elemento secundario.Cómo poner Expander ToggleButton en la derecha

Fui por su parte pero here dice "El control Expander no tiene ninguna pieza con nombre".

Encontré un ejemplo here. Pero anula el estilo de expansión predeterminado.

Creo que la imagen adjunta debe transmitir lo que quiero. Cómo hacer. Cualquier enlace sería útil.

enter image description here

Respuesta

9

Utilice esta:

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

que añadir su contenido en el TextBlock, si usted no quiere a todo el contenido sea de derecha a izquierda.

+0

@NikhilAgrawal Como dije, usted debe poner su contenido dentro de un recipiente LeftToRight ('TextBlock' en mi ejemplo). Puede establecer 'FlowDirection' de su' StackPanel' en 'LeftToRight'. –

+0

Hice lo que sugeriste. Mi expansor contiene un panel de distribución orientado verticalmente (Orientación = Vertical) que tiene etiquetas como secundarias (se agregó dinámicamente). Configuré el expansor FlowDirection = "RightToLeft" y stackpanel FlowDirection = "LeftToRight" y funcionó. Gracias –

15

hay un truco que puede ayudar a

<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

¿Puedes explicar por qué tu respuesta es diferente de la respuesta de MD.Unicorn? –

+1

Sí. Con su respuesta, el texto del encabezado se alineará a la derecha junto con el ToggleButton. En mi solución, el texto del encabezado aún se alinea a la izquierda y solo ToggleButton se desplaza de izquierda a derecha. – Nitesh

+0

Aunque el interlocutor no esperaba esta respuesta o probablemente no la necesitaba, me ayudó con mi propio problema. ¡Aclamaciones! –

Cuestiones relacionadas