← Back to context

Comment by ygra

8 years ago

Windows Forms is a thin wrapper around the Win32 API and GDI+. Which is good if you want to customize things on a low level, but bad if you want to run it anywhere else. But cross-platform compatibility for a UI framework was probably a very low priority in 1999 or 2000. You could port it to .NET Core, but then you could only run it on Windows, since pretty much everything is a P/Invoke into user32.dll.

Generally, having something cross-platform either means you're terrible everywhere (Swing), terrible on non-primary platforms (GTK), or have to invest a lot of work in making things work well and still don't quite feel native (Qt). Or you go the Xamarin Forms route and have a few core controls that have to be implemented natively on every platform, which reduces their features to the lowest common denominator, often doesn't expose or enable low-level platform details that may sometimes be needed for customization, and means that you have to invest thrice as much effort into making everything work.

In my experience UI frameworks either are bound to a specific platform, or suck. Or both. But a cross-platform WPF would be awesome, but I'd rather expect UWP to become cross-platform instead of WPF.