spivonious said:

Can you do it in the code-behind? When the content changes, just start animating the Border to the new size of the content. At least that's how I'd approach it in WPF.

That's what I ended up doing. I'm not sure if the Blend FluidLayout stuff would've worked for me, I couldn't get it to look quite right.

 

The item in question I wanted to resize was actually a databound item in a ListBox. I'd set it up so that the DataTemplate used for the items changes when an item is selected to show more information inside. In order to do this, I was handling the ListBox.SelectionChanged event to change the ContentTemplate of the containing ListBoxItem whenever they got selected.

 

To solve the animation problem, I record the ListBoxItem's current ActualHeight, then set the new ContentTemplate, then call UpdateLayout which updates the DesiredSize property. I then create a Storyboard with a DoubleAnimation to animate the height from the old height to the new DesiredSize.Height. This works a charm. Smiley

 

When the items get unselected, I simply change the Height property back to Double.NaN so they autosize again. Though I suppose I could animate that as well but currently I don't. Smiley