Note: consider when this answer was posted (2012). Since then, things have changed a bit, for example Silverlight has been deprecated.
Native Applications
For employment:
Well, nowadays most companies (at least most companies from Oman and the UAE, where I live) are slowly migrating to the cloud. However there are still some opportunities for native app development. The most demanding framework nowadays, is, ( no.. not WPF ), it's Windows Forms!
Why plain old Windows Forms instead of the awesome WPF? One reason, legacy apps. Nowadays most companies only start small scale GUI Application projects, mainly Business applications. For that, WPF will be very expensive since they already have a work-force experienced in Windows Forms, and a lot of legacy code, however for WPF they will have to create a new code-base, and that's pretty risky. So the best thing to keep you employed is Windows Forms.
For new projects: However, if by 'worth learning', you mean, new, ambitious and glamorous. Then WPF may be the best choice for you. It depends on what your requirements are, really.
The Cloud
Now, for the cloud. Java FX and Silverlight are both currently head to head. However Java FX may have an edge since it supports a greater number of platforms. But then again, Silverlight has all the power and resources of Microsoft behind it, and it's ideal for Windows Phone development.
Comparison
For a comparison, here's what you get by each toolkit:
Windows Presentation Foundation:
- The power and resources of Microsoft
- Ideal for creating new Desktop Applications
- Eye candy
- Awesome API
- XAML, best way to separate design from logic
- Create Apps for the Cloud (but they only work on Windows with .NET though)
- Windows Phone can run a subset of WPF
Windows Forms:
- Used to possess the power and resources of Microsoft, now WPF has that
- Ideal for maintaining legacy applications
- A well-trained workforce, if you're an entrepreneur
- Pretty mature API
- Supports more platforms than WPF (through Mono)
Java FX:
- Create Apps for the Cloud
- Backed by Oracle
- Pretty nice API
- Cross-platform, runs on most PCs, smart phones are a problem.
Silverlight:
- Create Apps for the Cloud
- Backed by Microsoft
- Pretty awesome API
- XAML
- Cross-platform, runs on Mac and PC, runs on Windows Phone.
GTK#:
- Cross-platform, runs on most PCs, runs on no smart phone.
- Backed by the Open-Source world
- Endorsed by Mono
- Ideal for creating Apps for Gnome.
Swing:
- Cross-platforms, runs on most PCs, smart phones are a problem.
- Pretty mature
- Ideal for creating 2D games, using Java2D
Conclusion
As you say:
While my main aim is to create the app, obviously I'd like to learn something useful while doing so rather than picking up skills with something that's never going to be seen on a project at work.
Well, the frameworks you are most likely to see at work (if you don't for mainstream companies like Microsoft, Oracle, Google etc. ) are Windows Forms and WPF. At least that's what most companies use here. So those are what I recommend. JavaFX and Silverlight also look like they have potential and may be used in the near future.