In my case, I would like the expand/collapse to happen from left to right and right to left respectively.
The animation should happen when the visibility changes.
You could create two animation storyboards (One for expanding and one for Collapsing) that animates the Width of the stackpanel, then on StackPanel_VisibilityChanged run the appropriate animation.
I recommend animating on the Width property rather than ScaleX. Otherwise the entire control (StackPanel) will look crunched/stretched as its animating.