Karsten's Avalon Gotcha Quiz (and answer) points to a common source of confusion for DockPanel users:
When Avalon encounters the "Fill" command, it does just that -- filling the entirety of the given element no matter what follows that element. So though I logically expected the placement of the following TextPanel to carve its location, it gets overriden by the earlier Fill command.
DockPanel lays all of its children out in markup order (i.e. the order in which they appear on the Children collection), so if you tell a child to Fill it will take up all the remaining space, even though other children still remain.
Another strategy (which other toolkits have done) is to go in a fixed order when docking, i.e. first layout all children that are docked top, then bottom, then left, etc. This makes some scenarios impossible without nesting DockPanels (e.g. Left, Top, Right), and did not provide clear gains for developers.
Docking Fill children last would be inconsistent with the behavior of other values, but it seems to be what many users expect.
We've been considering this change, any thoughts (pro or con)?