Botón expansor en el lado derecho: ¿cómo hacerlo?
quiero colocar el botón Expander en el lado derecho de la etiqueta. ¿Como hacer esto?
Botón expansor en el lado derecho: ¿cómo hacerlo?
quiero colocar el botón Expander en el lado derecho de la etiqueta. ¿Como hacer esto?
Debe volver a colocar la plantilla del control. Aquí hay un ejemplo: http://patconroy.wordpress.com/2008/12/18/restyling-the-wpf-expander-control/
También puede configurar el FlowDirection
en RightToLeft
, pero eso puede causar otros problemas. Por ejemplo, también cambia la dirección del flujo del contenido del expansor, por lo que es posible que deba volver a establecerlo.
<Expander FlowDirection="RightToLeft">
<StackPanel FlowDirection="LeftToRight">
</StackPanel>
</Expander>
Otra manera de abordar esto es para colocar el expansor donde quiera, sin ningún tipo de cabecera o el contenido en el propio expansor. A continuación, vincule la visibilidad de su control de contenido a la propiedad de expansores IsExpanded
, utilizando BooleanToVisibilityConverter.
<StackPanel>
<StackPanel.Resources>
<BooleanToVisibilityConverter x:Key="boolToVisibility" />
</StackPanel.Resources>
<DockPanel>
<Expander DockPanel.Dock="Right" x:Name="rightAlignedExpander" />
<TextBlock Text="Expanders header" VerticalAlignment="Center" />
</DockPanel>
<Grid Visibility="{Binding IsExpanded, ElementName=rightAlignedExpander, Converter={StaticResource boolToVisibility}}">
<TextBlock Text="Expanders content"/>
</Grid>
</StackPanel>
El inconveniente es que no se ampliará cuando se haga clic en el encabezado, pero que podría implementarse fácilmente si es necesario.
Personalmente creo que esto es más simple y directo en lugar de rediseñar completamente la plantilla del control. También tiene el beneficio adicional de que mantendrá los estilos ya aplicados al expansor, por ejemplo, cuando se utilizan temas de terceros como DevExpress o Telerik.
gracias, bueno uno – Sender
@ user108: Si esto responde a su pregunta, debe marcarlo como aceptado. –