You can consider this is pure WPF visual effects. First define your grid like this:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border x:Name="Results" Grid.Column="1" Grid.ColumnSpan="2"/>
<Border x:Name="LeftPanel" Grid.Column="0"/>
<Border x:Name="LeftExpandPanel" Grid.Column="0" Grid.ColumnSpan="2" Visibility="Collapsed"/>
</Grid>
The expand panel is at bottom to make sure it on the top of the other two. Put the simple list on left panel, the complex list with rich item template on left expand panel and your result UI on results.
Then define a group of animations and states to handle the animation switch visibility(from Collapsed to Visible and from Visible to Collapsed) of LeftExpandPanel.
The last is to handle click of the arrow button. You can put the handle in code behind since it is purely UI related. You need to do two things inside the handler:
- Change the arrow direction on the button, and save the state(expanding or collapsing)
- Start animation.
Done. Hope it can help you.