Different historical background that now are unifying
I must say the reason is the historical background. Web pages was simple text documents at the beginning, with forms. Then more and more functionallity was added with scripting (JavaScript) and separation of semantics (HTML) and design (CSS).
GUI applications has always been applications with "functionality" as highest priority in contrast to pages with information. Then GUI programs got colors and more design elements to improve the usability and now web applications.
Web design and GUI applications had different strengths that now are unifying into web applications.
Web Design:
- Pages with information (lack of programmatic functionality)
- Scripting added and separation of semantic elements (HTML) and design (CSS)
- Web applications (HTML5 with more form elements, canvas element and web sockets) (side by side with pages with information)
GUI Design:
- Black and White applications
- Colors and more design elements added
- Web applications (HTML5) with easier deployment (no installation) in a networked world.
Todays user interface frameworks
Today with WPF, Android, JavaFX the layout is done similar to as in HTML-files with an XML-document. CSS or similar theme-files may be used for styling. Click-Once and Java Webstart may be used for deployment.
At the same time, web applications use Unobtrusive JavaScript to keep the HTML-document clean from programming code. And more features that only was available in the GUI-world is introduced on the web with HTML5.
So the design process once was very different, but now is getting more and more similar. Microsoft tried with ASP.NET to make web sites in the same way as GUI applications have been done historically. And with WPF and Silverlight they tried again, to do web applications and GUI applications the same way and used the same program (Expression Blend) for both in the design proces.
Adobe Air, Adobe Flex tried also to have the same design process. And now a few frameworks for Smartphones tries to do Smartphone-apps the same way as web applications are done, see Titanium and PhoneGap.
In the end, the reason to why I think web applications will win, is that almost all interesting applications are network applications (client-server) and Mobile code is the easiest way to do and deploy network applications and at the same time be Cross-platform.
StackPanel
is not an explicit layout element. It grows itself to fit the required content within the confines of the container it's in.