2012-01-07 19 views

risposta

19

È 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> 
0

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.