Tasto Expander sul lato destro: come si fa?
voglio posizionare il pulsante Expander sul lato destro dell'etichetta. Come fare questo?
Tasto Expander sul lato destro: come si fa?
voglio posizionare il pulsante Expander sul lato destro dell'etichetta. Come fare questo?
È necessario eseguire il restyling del modello del controllo. Ecco un esempio: http://patconroy.wordpress.com/2008/12/18/restyling-the-wpf-expander-control/
È anche possibile impostare FlowDirection
su RightToLeft
, ma ciò potrebbe causare altri problemi. Ad esempio, cambia anche la direzione del flusso per il contenuto dell'espansore, quindi potrebbe essere necessario ripristinarlo.
<Expander FlowDirection="RightToLeft">
<StackPanel FlowDirection="LeftToRight">
</StackPanel>
</Expander>
Un altro modo per avvicinarsi a questo è quello di posizionare l'espansore dove vuoi, senza alcuna intestazione o il contenuto in espansione stessa. Quindi associare la visibilità del controllo contenuto alla proprietà IsExpanded
dell'espansione, utilizzando un 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>
Lo svantaggio è che non si espanderà quando si fa clic sull'intestazione, ma potrebbe essere facilmente implementato se necessario.
Personalmente penso che questo sia più semplice e diretto invece di ridisegnare completamente il modello del controllo. Inoltre ha il vantaggio che manterrà qualsiasi stile già applicato all'espansore, ad esempio quando si utilizzano temi di terze parti come DevExpress o Telerik.
grazie, bello – Sender
@ user108: Se questo risponde alla tua domanda, devi contrassegnarlo come accettato. –