I keep using it because I'm used to all its warts and idiosyncracies. So I don't know what properly-supported alternative one should use. I just get annoyed how many brand-new fresh-out-of-college developers I meet that use it. They need something better.
Having used both WPF and Silverlight until 2010 (at which point I abandoned the Microsoft stack altogether) I agree, but I don't think the answer is either of those technologies.
Have you tried building GUI apps in Racket? That's the sort of thing I was wishing for when using either Java or .NET to build Windows GUIs.
I've done some academic intro-to-FP stuff in Racket, but haven't really got my feet wet with a non-toy application in it. So the GUI framework is good?
Yup. I haven't built anything of significance in it (yet) but it's proved really easy to learn, and (again, in my limited experience) rock-solid stable and fast enough:
A trivial example:
#lang racket
(require net/url
racket/gui/base
racket/sandbox)
(define (menu-file-exit-click item control)
(exit 0))
(define frame
(new frame% [label "Demo"] [height 480] [width 640]))
(define menu
(new menu-bar% [parent frame]))
(define menu-file
(new menu% [parent menu] [label "&File"]))
(define menu-file-exit
(new menu-item% [parent menu-file] [label "E&xit"] [callback menu-file-exit-click]))
(send frame show #t)
... is all you need to create a basic GUI app with a File -> Exit menu option. And that really is all there is - no resource compilation, no code-behind, no separate languages for expressing the UI and the actions connected to it.