How to put Expander ToggleButton on right

Nikhil Agrawal picture Nikhil Agrawal · Feb 15, 2012 · Viewed 10.6k times · Source

By default the expander has a left aligned toggle button but in my WPF app i want toggle button on the right side of the header without the help of Expression Blend. just plain XAML and/or C#. My expander contains a vertically oriented stackpanel which has labels as its child.

I went for its part but here it says "The Expander control does not have any named parts".

I found an example here. But it overrides the default Expander Style.

I think the attached image should convey what i want. How to do. Any link would be helpful.

enter image description here

Answer

Nitesh picture Nitesh · Jul 25, 2013

There is a trick that can help

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