Leaving aside Xamarin that is not . NET Core and serves mobile for Android and iOS (UWP wheel on the late Windows Phone), but that I think these products will approach, it is possible to develop GUI on. NET Core with any library accessing the GUI API of the operating system you are using.
Note that there have been changes and now Xamarin is one of the strongest ways to develop multi-platform applications through the MAUI.
Rem some projects that are available by the community, which is one of the ideas of . NET Core, let the community provide what it needs beyond the core of the platform (would not miss the pun). I will list the most important, although I do not use them currently, so I can not talk about the results, some are not ideal:
- GTK# - Linux, macos, and windows, just to name a few, works great on all of them, but there’s some weird stuff off Linux. It was not developed for . NET Core but for Mono, but runs on . NET Framework without difficulty, there is no problem with . NET Core. They’re standard libraries and there’s a lot of people using it, there’s even other libraries based on it. There’s a Binding more specific to . NET Core, but I don’t know him.
- Monomac/Xamarin.Mac - Obviously only works for Macos, came from Mono, but nothing prevents to use with . NET Core in the same way.
- Winforms - Yes, it can be used in the implementation of Mono. It’s not one of the best written software you’ve ever seen, but it usually works on multiple platforms. And from . NET Core 3 can be used in Windows, and they say in the community that they will port for other platforms, but it is not easy
- Qtsharp - It is still far from complete implementation, but can already use something from Qt (half-abandoned).
- Avalonia - GUI that runs on multiple platforms with its own renderer, which is something that has advantages and disadvantages.
- Eto - A layer that uses existing libraries. Of course, if you use WPF features, it won’t run on Linux, if you use something from Cocoa, it won’t run on Windows.
- Xwt - It’s a layer on top of others Engines.
- Unity - It’s more for games, but he still has his GUI.
- Noesis - It is paid for large projects, but runs on several platforms and program as in WPF, seems to have potential.
- Electron - It’s not a traditional GUI, but you can use it as one, of course a part won’t be in C# (maybe now with Blazor can be almost all C#).
It has more exoteric Guis and for alternative platforms. Remember that the . NET Core should be able to run on almost any platform, from embedded devices to video game consoles that may have specific libraries. And some projects may not be in development.
GUI has always been a problem, until today I think that there is not a suitable for any platform and specific technology, worse even if it runs well at all, a little fault of the operating systems, a little blame of the existing products.