For the last few months we've been putting the finishing touches on a WPF application. Okay at this point we've gone well beyond finishing touches and into the realm of "ship the danged thing already!"
Among the various graphics elements were about 40-50 information popups for the roadway map, each with fade out and fade in storyboards (2 storyboards per popup). At the time I designed these, I was still struggling wth the Blend interface, and the information was static, so I opted to use Canvases. We recently made the decision to populate the popups dynamically. That meant converting the layout type for each popup from Canvas (which is a fixed size) to a Grid (which can resize to fit the text inside). Every time I changed the layout type though, Blend would wipe out the animations in the storyboards (thankfully not the storyboards themselves). I then had to recreate the storyboard animations (about 80-100 total). What should have been a simple conversion process took nearly four days of painstakingly work.
The lesson: well there's not much of a lesson here except, if you're thinking about using Canvases, don't! (Unless you're developing for Silverlight, and then it's irrelevant, since Silverlight only supports the Canvas layout.) Most everything that a Canvas can do, a Grid can do better, especially when developing UIs that will be pushed, pulled, and resized viz. any Windows app. However Grids have their own idiosyncracies ... um, features (there we go) to look out for, as I found out during the conversion process.
For instance, Grids can be anchored to either the right or left edge or to both, or the top and/or bottom edges. It really depends on which direction the Grid will grow in, once the content starts growing past the initial size of the Grid. The trick is not to use the mouse to adjust these values, as doing so causes Expression Blend to "helpfully" switch the anchor from the right to the left edge and vice versa depending on which side the mouse is closest to. So if I set my Grid to be left aligned, and start pulling the right edge of the Grid to resize it, once I cross the halfway point, Blend will switch the alignment to the right, reset the left margin to zero, and increase the right margin accordingly. Very frustrating.
The workaround I found is to manually type in the values for the left margin and right margin, test it, increase/decrease the margin, test again, and repeat until the Grid is roughly where I want it. At that point, slight adjustments with the mouse don't seem to affect the alignment.