Not really seeing the "change in direction", just need to choose the right tool for the job
There may be a number of different tools, but thats becuase there are a number of different jobs (and some of the tools are older than others)
- Win32 / GDI is the original API that has been around since the dawn of Windows. Its stable, reliable, its here to stay until the end of time (for backwards compatability reasons) and its also a pain in the ass to use because the API was designed before OOP became prominant (and also for backwards compatability reasons)
- Windows Forms is essentially just a wrapper around the WIn32 API / GDI. Its stable, reliable, infinitely easier to use than the Win32 API, and again here to stay until the end of time.
- WPF is for developers creating "rich" (i.e. flashy) user interfaces for desktop PCs. Windows forms is still built on top of GDI, a system originally designed at the time of 16-bit operating systems and so its not really geared around flashy interfaces. WPF aimed to make things easier by starting from the groud up with a new layout engine. Its future may not be as assured as Win32 or Windows Forms, but I'd say that its still a fairly safe bet that WPF will be around for a while.
- Silverlight is a WEB technology, don't confuse Silverlight with WPF just because it uses XAML. There probably could have been more consistency with WPF, however in a lot of places the inconsistency is there because its a WEB technology and just can't do everything WPF can (e.g. for security reasons).
- WinRT is a technology for building mobile (i.e. phone and tablet applications). Like Silverlight, don't confuse WinRT with WPF & the .Net framework just because it uses XAML, and again like Silverlight its inconsistent in places because you can't do everything that you can do on a desktop on a tablet. You woulnd't choose WinRT to build desktop applications, you choose WinRT to build mobile applications - the fact that they work on desktop PCs too is just a bonus.
Maybe they could have been more consistent in places, but I don't really see the "change in direction" - Each of these technologies has its purpose (even if that purpose is allowing me to keep developing my legacy applications).
In fact Microsoft are being pretty consistent with their use of existing languages (C#, XAML, HTML, JavaScript) even on new platforms. The only popular development environment I'm aware of which is more consistent across platforms is Java, and developing in Java is a pain in the ass.