Use the mvvm [0] toolkit, it is good! That way you decouple your view (<= gui toolkit) from your (view)model.
It works with Avalonia, WPF and should work with Winui3, Uno etc too. Avalonia is being used by some pretty impressive applications btw, check that one out too. (I have no affiliation).
Avalonia (+ .net) is the reason why I think that is the best stack for any desktop application or util, because utils eventually gain a gui. Imho a far better choice than Python or JS in most cases.
As an aside, I don't understand why the Java players do not put more emphasis on JavaFX. Would be the ultimate choice for people that are wary about the MS affiliation.
Had a chance to compare both Uno and Avalonia and I choose Uno any day. Mostly because of the breadth of what they have. Their Navigation "Extensions", Authentication, Toolkit controls, and their Hot Reload is awesome.
Now the fact they announced a Drag&Drop Designer seals the deal.
Been trying to use VS Code more and more with Uno and it works great.
I see Avalonia has having a decent Desktop offering but I target Mobile and Web and they're nowhere where Uno is.
Interesting. Here someone comes to the opposite conclusion after using both intensively [0], where they found that avalonia is a superset of uno in features, and that uno is tied to the UWP & WinUI API for the windows target. Maybe things have changed in between?
What is your feel about the web target? The ux and feel of these Canvas blobs are poor across all toolkits imho. Do you use it as an internal web app that is used like once every day?
Uno doesn't use MAUI. It's either WinUI or Skia-based, just like Avalonia.
Uno also doesn't use Canvas on Web, it uses the DOM. I use it for an enterprise Web App, not a public website.
I feel Nick been pro Avalonia forever as far as I can tell and the pace at which am noticing Uno innovating, one year might make all the difference in the world.
In all cases, I made my mind by testing both and I just had a way better experience with Uno, everything available out of the box, the tooling is above and beyond.
Anyways, just wanted to share by point of view, typically don't contribute here.
How does Avalonia do native look-and-feel? Does it use its own custom controls (with themes) or does it try to do what Qt does (using native theming APIs)?
Uno currently uses some native controls on mobile iOS/Android/Catalyst (text input, mostly) to provide platform features, but the rest is rendered using graphics primitives. On Web, the same happens where CSS is used for most of the rendering. Input interactions are managed entirely by Uno. This allows to have a visually identical UI across platforms, unless the developer chooses otherwise.
On Desktop targets, Uno is rendering everything on an HW accelerated Skia canvas, with GL/Metal backends.
Uno Platform is a cross platform implementation of the WinUI+WinRT APIs. That cross-platform implementation never used the official WinUI/WinAppSDK implementation on Windows.
When running on Windows, which this is where some confusion may lie, you can choose to use the Uno implementation (the netX.0-desktop TFM), or the original WinAppSDK by Microsoft (the netX.0-windows10.YYY TFM), since both implementations share the same API, making user code compatible with either ones.
On the other platforms, Wasm/Linux/iOS/Android/Catalyst/macOS, only the Uno implementation can be used.
Is the hot reload in Platform Studio limited to just UI changes or can any code in the project be hot reloaded? If the latter, what are the limitations?
C# and Uno, C# and Avalonia (https://avaloniaui.net/), Dart and Flutter (https://flutter.dev/) are all interesting options for WebAssembly application development. It's nice to be able to do cross platform desktop applications that can also be compiled for web delivery.
I'm very interested in this tooling for one project in particular. However, I don't think you can assign global hotkeys or minimize things to the system tray. At least I haven't found a way through research yet.
I have followed this project for a while and it looks pretty sweet.
Unclear why. But it is not uncommon for Microsoft to leave 'holes' in their offering soo that the partner network can fill them. Over 90% of Microsoft's revenue is partner-delivered. This often sparks great innovation outside of Microsoft walls.
Uno Platform promotes the use of .NET, so is therefore a tech-partner to Microsoft.
And with Hot Design (https://platform.uno/hot-design/) Microsoft's .NET Ecosystem becomes richer for a tool that no other developer ecosystem has. It is A RUNTIME VISUAL DESIGNER for .NET Apps. It turns the App you are developing into a Visual Design surface you can drag-and-drop components on, data bind,etc.
But since they pivoted to cloud, web AI and they don't profit too much from people building desktop and mobile apps, I guess Microsoft won't invest much resources into MAUI or any GUI toolkit.
While competition can be good sometimes, I am not convinced it's a good thing when it comes to GUIs. See Linux desktop fragmentation.
In the .NET community we have the ideea that should be one tool for one job, one library, one framework etc. Now for Gui we have Avalonia, Uno and MAUI which can lead to fragmentation, noise and clutter and can reduce code reusing.
It would be nice if most people will pick one tool and stick to that.
Most people used EF for ORM, Newtonsoft for JSON, Automapper for object mapping built-in DI container for dependency injection, XUnit for tests, Fluent Validation for validation, ASP.NET WebApi for web applications, ASP.NET MVC for websites and so on.
It works with Avalonia, WPF and should work with Winui3, Uno etc too. Avalonia is being used by some pretty impressive applications btw, check that one out too. (I have no affiliation).
Avalonia (+ .net) is the reason why I think that is the best stack for any desktop application or util, because utils eventually gain a gui. Imho a far better choice than Python or JS in most cases.
As an aside, I don't understand why the Java players do not put more emphasis on JavaFX. Would be the ultimate choice for people that are wary about the MS affiliation.
___
0. https://learn.microsoft.com/en-us/dotnet/communitytoolkit/mv...