WPF is a lot more than just XAML, and you can totally write entire WPF apps without a line of XAML. XAML is mainly useful for tooling and lacks many of the niceties of C# while operating on a DOM that is a bit more complex than HTML. I'm not sure if anyone wants to edit it by hand, which is true of any XML dialect.
I really wish JavaFX Script would have taken off. It provided a nice balance between code and markup.
For me and many other .NET developers I know, speaking about XAML means the whole stack, e.g. XAML, .NET APIs, Blend integration and third party components.
I just tend to abbreviate to XAML when speaking about it.
There changes on the APIs between WPF, WinRT and Silverlight if you will, and not all features are exposed across all stacks.
Yet, any developer knowing XAML, the usual programming idioms and the respective .NET APIs can easily transition among all of them.
This has been mentioned at multiple PDC and BUILD conferences in the last years, but I guess many at HN and Reddit don't follow them.
I just see XAML itself as totally optional, and it is weird to hear it used to represent the entire architecture. One of the reasons I haven't even tried WinRT yet is because it seems much more XAML heavy than classic WPF (it is also missing font metric APIs my programs depend on...). I'm also a bit of a code traditionalist, and find transitioning between the two (markup and code behind) a bit jarring.
Plenty of Microsoft haters on HN, this post has already been flagged or flamed off the front page. Oh well.
That little layer on top is the one beneath their app with which they interact, is it not? I'm really asking, not being a Windows developer but looking to get into it - and being a bit confused as to how to proceed.
It goes like this, back when Longhorn was the codename for Windows Vista, with the big plans of using .NET for everything, the next generation UI engine was named Avalon.
Parts of it eventually became what is known as WPF. The whole set of concepts that it embraces are as follows:
- XML based "language" for describing UI layouts (XAML)
- A set of .NET APIs for buttons, dialogs, windows, and so on
- A set of .NET APIs for manipulating the XAML DOM
- A set of .NET APIs for handling application resources
- A set of abstraction concepts, namely binding, data templates, triggers, MVVM, storyboards
When Silverlight came out, the team responsible for it adapted all these concepts to the platform. Similarly to the WinRT platform.
The main differences are the XML namespaces used by XAML, which expose different set of UI widgets in each platform.
Also some .NET APIs are a bit different as the classes aren't 100% equal across all platforms, e.g. TypeConverters are not available in WinRT.
However those basic concepts originally from Avalon are still there.
Only those not able to grasp that what matters is the XAML stack, not the little layer that is put on top of it.