exceptione
17 hours ago
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.
___
0. https://learn.microsoft.com/en-us/dotnet/communitytoolkit/mv...
johnuterry
11 hours ago
CommunityToolkit.MVVM is great!
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.
exceptione
11 hours ago
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?
___
0. https://www.codeproject.com/Articles/5366945/Multiplatform-X...
johnuterry
11 hours ago
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.
exceptione
10 hours ago
I thought Avalonia was not WinUI based, giving Avalonia more freedom an consist platform behaviour.
Thanks for sharing, appreciated.
johnuterry
10 hours ago
Sorry, I meant Uno is either WinUI or Skia, they have both. Their Skia is same as Avalonia.
peutetre
17 hours ago
> Avalonia is being used by some pretty impressive applications
Like this implementation of Visual Basic 6: https://bandysc.github.io/AvaloniaVisualBasic6/
TheUnhinged
16 hours ago
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)?
peutetre
16 hours ago
Avalonia draws its own controls and supports themes.
In contrast, Uno uses native controls as much as possible.
jlaban-uno
13 hours ago
Uno Platform Dev here.
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.
exceptione
11 hours ago
So does that mean you do not use winui calls anymore, but like Avalonia share the same implementation of controls across Linux and Windows?
See the diagrams from here to see what I mean: https://www.codeproject.com/Articles/5366945/Multiplatform-X...
jlaban-uno
7 hours ago
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.
zerr
15 hours ago
Qt does custom drawing of controls as well. wxWidgets uses native controls.