18 ms·
.NET MAUI: .NET Multi-Platform App UI
- tomc1985 6y agoAny direct experiences using this? I've been looking for a good multiplatform UI for desktop that does Mac/Linux/Windows. Mobile is a nice side benefit. It would be nice to use C# again No, I'm not interested in Electron. Blegh.
- kreitje 6y agoIt will be out with dotnet 6 later this year.
- miohtama 6y agoHave you looked Flutter? It is mobile-first, but does native desktop applications as well. Very battle tested and natively compiled fast code.
- ipsum2 6y ago> Very battle tested Desktop support is very new and still in beta: https://flutter.dev/desktop https://flutter.dev/desktop
- alskdj21 6y agoI don't see the hate around Flutter here on HN. Yes, it's Google, it's bound(?) to die. But for now, people are productive with it. > battle tested Desktop support is far from the ideal situation(alpha). As far as I'm aware, the iOS jank is still an issue.
- zibzab 6y agoFlutter looks great on paper, but is a pain to use in real projects unless your app 90% overlaps with one of the included samples. Also, it's Google. You never know if it will be around next year which means using it in production is a huge risk.
- eggy 6y agoI prefer C#/F# over Dart, but Flutter is promising, and I continue to check in once and a while. I usually overcome PL preferences when the platform or toolkit is compelling. I remember Notch (of Minecraft fame) adopted Dart very early on, and I actually tried it out back then. Somebody had written a Lisp in Dart. I really like F#, and it seems to be sidelined all the time with .NET. There are more and more ways to write C# in a functional way, and it has become the lingua franca of many game engine/3D media creation tools like Unity, Wave Engine, Flax, and Stride to name a few.
- chgibb 6y agoVery early days still but support for C# is on the roadmap https://hydro-sdk.io/ https://hydro-sdk.io/
- datavirtue 6y agoJava and C# are "battle tested." Flutter is an experimental Google project.
- timsneath 6y agoI'm not sure what your bar is for "experimental", but Flutter is one of the most popular UI toolkits out there, with many 100m+ MAU apps using it, including tens from Google itself. It's already shipped a 2.0 release, has 15,000+ packages on the pub.dev package server, is the framework Ubuntu has settled on for new desktop apps, has hundreds of active contributors, and is one of the top ten OSS projects on GitHub. "Experimental" feels like an odd word choice, if you're truly trying to offer useful information. [Disclosure: I work on the Flutter team.]
- tracker1 6y agoA lot of devs are risk adverse when choosing platforms for projects. There's still risk as in, will this still be supported in 3-5 years and is the API going to change so much in 1-2 years I'll be rewriting significant portions of my application. I've been passively looking at Flutter with interrest.
- meamin 6y agoAlso, the Dart lang team seems to consider Flutter a first class citizen and has been modifing the language for it specifically. From syntactical sugar for Flutter's constructors to carefully selecting language features considering muilti-target platform performance. It really is the project to beat. I am not sure how you are gonna drop a framework over C# and compete with a framework/lang combo long term.
- ClumsyPilot 6y agoSome people think like this: if i write an app and come back in 10 years, is it still going to work, compile, and be possible to update? By that benchmark very few platforms are acceptable, and they are mostly first party. That standard makes sence if you have a rigid hardware-like approach
- tffgg 6y agoDoesn't use native controls
- aidenn0 6y agoIMO, Tk is by far the best for targeting multiplatform desktop. Qt is a close second and Gtk is "sticks out like a sore thumb, but works" I don't think Tk runs on iOS, which is why Tk is usually disqualified in "multiplatform" recommendations MAUI and Xamarin.Forms both have "okay" linux support last time I checked.
- bitwize 6y agoTk also looks like ass in today's environment of modern apps with their abundance of white space and dearth of affordance. Your Windows 9x-like Tk app will stick out like a sore thumb.
- deleted 6y ago[deleted]
- bscphil 6y agoTo put the question a bit more nicely than my sibling, don't Tk apps all look... really bad? I don't know if I've ever seen a Tk app that tried to mimic native widgets at all. For example, the most prominent Tk application I'm aware of looks like this on Windows: https://upload.wikimedia.org/wikipedia/commons/2/2b/Scid_4.62-Win7.png https://upload.wikimedia.org/wikipedia/commons/2/2b/Scid_4.6... On Linux (where I use it), it looks even worse. While Qt doesn't use real native widgets on all platforms (IIRC), it at least seems to effectively mimic them under most conditions.
- nyanpasu64 6y agoLast time I checked (years ago), apps using ttk widgets (rather than old tk widgets) look nearly native on Windows, but still ugly on Linux (matching neither GTK nor Qt themes).
- aidenn0 6y agottk (which was introduced in tcl 8.4, circa 2002) uses native widgets on Windows and Mac. The default theme on linux is ugly, but there are reasonable themes available. There was an attempt at a GTK backend for ttk on linux, but apparently there were technical difficulties so it was abandoned.
- worble 6y agoUnless something has changed recently, MAUI won't support Linux on release.
- ripley12 6y agoFWIW, I'm in the same bucket and I'm leaning toward Blazor. There's a big push in .NET 6 to deliver "Blazor Desktop", which is essentially more native wrappers around Blazor Server: https://github.com/dotnet/aspnetcore/issues/27217 https://github.com/dotnet/aspnetcore/issues/27217 Might not fit your needs (it is bringing web technology to native apps, much like Electron) but I think it has more of a future than XAML. And the underlying technologies (Razor, Blazor Server) have been around for a while so you can get started now even if all the pieces aren't quite there. edit: rereading the MAUI repo, it looks like hosting Blazor inside a MAUI app will be an option. Nice.
- powerlogic31 6y agoDoes Godot the game engine count? I've seen it used in a pixelorama and some map modeling program. Also it's cross platform with c# support and gdscript pretty easy to understand.
- tomc1985 6y agoI think I may have gotten this tech mixed up with Avalonia. Though, one integrates the other IIRC?
- bionade24 6y agoTry QtQuick2 if you want to target mobile, too. QtWidgwts for desktop only.
- teryyy 6y agoHaving used WinForms and WPF and Xamarin, it's great to see a more cross-platform approach.
- The_rationalist 6y agoHow does it compare to jetpack compose and the web? (ergonomics, capabilities, performance) What is the 2D renderer being used, skia? Usually the biggest selling point of non web GUIs is being NOT js. If only Microsoft could integrate graalVM in Edge/electron then we could all use our favorite language in the feature complete APIs of the web.
- ghuntley 6y agoThis is Xamarin forms with a new name.
- wvenable 6y agoYes! But also with desktop targets instead of just mobile targets.
- ghuntley 6y agoXamarin Forms was not good tech.... :-)
- Mertax 6y agoHopefully a chance for them to take what they learned through years of experience and cut away from the cruft/technical debt that built up with Xamarin.Forms. I think there is potential for redemption here -- although I do worry the native widget binding approach still comes with a lot of friction that adds unavoidable complexity. However, Maui's new "handler" pattern for native widgets seems like it could be adapted to support Skia/manually rendered widgets if someone wanted to invest in that non-trivial effort. From my experience the native widget binding is both the strength and the weakness of the approach. You get to take advantage of battle tested native controls that are fully featured. But if the platforms don't have enough similarity between them to create a cohesive interface then you're battling multiple platforms trying to take advantage of the native features layered in another opinionated model that sometimes can be detrimental to the native performance you're hoping to leverage.
- JamesSwift 6y agoI'd love if this could be a step forward but from my fly-on-the-wall perspective following the github, I'm not optimistic that the team has internalized what exactly this new thing should be, and how it should differ from Xamarin. I'm hopeful though.
- datavirtue 6y ago
- MayeulC 6y agoNot to be confused with the anterior and kirigami-based https://mauikit.org/ https://mauikit.org/
- infogulch 6y agoAn unfortunate collision, though most .NET stuff is often fully qualified with ".NET" in the name so hopefully not a big problem in practice.
- nyanpasu64 6y agoThere was a flamewar last year over the naming collision: https://github.com/dotnet/maui/issues/35 https://github.com/dotnet/maui/issues/35. In the end, Microsoft locked the issue after saying: > Email me david.ortinau@microsoft.com. Stealing is not ok and has not been intended. Happy to work through conflicts. And it was never renamed.
- codeptualize 6y agoExciting! Let the cross platform games begin! (or continue..)
- osigurdson 6y agoI really hope that there is a strong focus on performance.
- LennyWhiteJr 6y agoIf .NET Core is any hint, it will be.
- orra 6y agoNo idea who's downvoting you. A lot of .NET effort is put into performance: value structs, value tasks, Span; generally, optimising code against various benchmarks. This cycle they're focused on improving 'inner loop performance'. The inner loop of the dev cycle, that is. https://github.com/dotnet/core/issues/5510 https://github.com/dotnet/core/issues/5510
- madeofpalk 6y ago> In addition, we are enabling developers to write fluent C# UI and implement the increasingly popular Model-View-Update (MVU) pattern. MVU promotes a one-way flow of data and state management, as well as a code-first development experience that rapidly updates the UI by applying only the changes necessary. I am very interested in this. Last year I developed a .Net Win UI/UWP app and while I enjoyed the rich library of UI components, I really did not like the weird imperative/declarative hybrid model of building UI, as someone who is so used to React. I would love to see some better layout fundamentals in this space. I wonder and hope I can use this with Xbox Game Bar SDK on Windows :)
- JamesSwift 6y agoYou can try to use Comet [1] today if you don't want to wait for MAUI [1] - https://github.com/dotnet/Comet https://github.com/dotnet/Comet
- Shadonototro 6y agoC# with MAUI went full OOP Swift with SwiftUI embraced the data oriented way with structs only They both target resource constrained devices, wich will perform better? I can already tell, apps with MAUI will be laggy on most android phones, probably less on iPhones since the hardware/OS is just better, just like with Xamarin today
- metaltyphoon 6y agoWhat? Xamarin apps currently compile to native code, so idk where you are getting this idea from.
- Shadonototro 6y agoIt doesn't matter, native code doesn't make your program automatically faster, C# code is hard to aot compile, lot of things happen at runtime and Xamarin uses a lot of that Also abuse of abstraction layers is what makes your programs slow, most of the time, wich Xamarin and now MAUI does a lot too, that's what you get for abusing OOP In server they could get away with it thanks to their JIT, since they don't care about cold start But in AOT scenarios, you depend a lot on the quality of the AOT compiler, how well it does optimizations, and how well your code is written to facilitates good optimizations Again, MAUI is open source, check their code, you'll understand what i mean by "the code is just slow" People always forget what they program for, mobile devices are constrained devices with constrained resources Pumping your desktop PC and claiming your benchmark does well doesn't automatically translate to better perf on mobile Then people wonder why their app drain the battery so fast, and you get 1 star reviews as a result, people doesn't care, that is why i leave 1 star reviews, most of the time
- LennyWhiteJr 6y agoAbout time. Developers have been asking for the ability to write cross platform C# desktop apps for two decades now.
- rangoon626 6y agoYellow Box, from Microsoft
- JamesSwift 6y agoUno has been around for a while...
- alskdj21 6y agoHow likely will it be that F# is supported out of the box? I understand that this is a push for mobile but hopefully a linux support will be considered. https://github.com/jsuarezruiz/forms-gtk-progress/issues/31 https://github.com/jsuarezruiz/forms-gtk-progress/issues/31
- airstrike 6y ago+1. F# deserves a lot more love
- taberiand 6y agoF# seems to get love and recognition through C# slowly evolving and absorbing features that have been the F# advantage for a long time (fingers crossed for C# discriminated unions...)
- 7sharp9 6y agoI think they have been removed from C#10 now, I saw this on the language discussion: >While we wanted to look at discriminated unions for C# 10, we don't think we're going to be able to
- mumblemumble 6y agoF# will be supported out of the box insofar as it's always able to call into any .NET API. For a more functional-friendly set of APIs, I've no doubt that the community will need about 5 minutes to put together a solid MAUI back-end for Elmish.
- adelarsq 6y agoWill be easier than now. For who are interested take a look on https://fsprojects.github.io/Fabulous/Fabulous.XamarinForms https://fsprojects.github.io/Fabulous/Fabulous.XamarinForms
- bokchoi 6y agoF# examples: https://github.com/dotnet/net6-mobile-samples/tree/main/fsharp https://github.com/dotnet/net6-mobile-samples/tree/main/fsha...
- vyrotek 6y agoI'm an absolute huge fan of all things .NET but I'm honestly a little hesitant about MAUI for now. Just feels a little early and duct-tapped? I also had a poor experience with Xamarin years ago... Flutter is such a good experience for us right now. I'd love "Flutter but in C#" which I think is what they want to do with Xamarin.Forms. Is it ready?
- chgibb 6y agoVery early days and not quite "Flutter in C#" but support for C# is on the roadmap https://hydro-sdk.io/ https://hydro-sdk.io/
- vyrotek 6y agohttps://github.com/hydro-sdk/hydro-sdk https://github.com/hydro-sdk/hydro-sdk > "...deliver updates directly to users over the air and out of band." Whoa. You have my attention.
- chgibb 6y agoOver the air updates are currently a "rest of the owl" situation for users. First party support for hosting and over the air updates is coming before the end of the year.
- nickflood 6y agoAnything that has a Xamarin legacy will forever have a "buggy and unfinished" stain on it for me. But I'll be glad to be proven wrong.
- bob1029 6y agoThe amount of energy Microsoft is pouring into these front-end efforts is pretty incredible. A more recent development that has me very excited is Blazor Desktop: https://medium.com/young-coder/blazor-desktop-the-electron-for-net-ecdcf5c30027 https://medium.com/young-coder/blazor-desktop-the-electron-f... > This leads to the second difference — in a Blazor Desktop app hosted in WebWindow, there’s no built-in web server. Instead, it’s pure .NET all the way down. And while we haven’t seen exactly how this will be implemented, it offers the chance to simplify the hosting model quite a bit. If everything comes together just right, it will be like using Electron without needing to learn Node. I honestly believe this model is going to revolutionize front-end development. The productivity uplift of not having to fuck around with JSON APIs alone is worth the price of admission. We already use Blazor (server-side) for several of our webapps. I have been able to implement things in 4 hours that would easily have taken 4 weeks if I had to argue with other developers about the shape of a JSON blob on the wire. Need a projection involving 3 collections to produce a table? No problem. It's literally 3-5 lines of LINQ in your razor file. With a "proper" JSON API, you would probably have to fetch 3 different resources to the client or develop a special unicorn method for each unique projection.
- Scarbutt 6y agoIsn't asp.net the equivalent of javaee in the microsoft world?
- ripley12 6y agoAgreed, I really think Blazor is the way forward for .NET UI. It's bittersweet, but: the Windows and .NET teams have failed to deliver a compelling alternative to web UI, and I'm impressed with how well Blazor integrates web UI with .NET. I think the killer feature is that it will work on any platform with a decent webview control (Windows will finally be joining that club soon when WebView2 ships in-box), including MAUI; so you can use the native hosting bits of MAUI and the web UI bits of Blazor, no XAML required. And then you can reuse that same UI on another platform or a web browser, trivially. Hot reload for Blazor dropped in the recent .NET 6 preview 3 so this is a really good time to get started with it. It blows XAML Hot Reload out of the water because it can reload many C# changes in addition to HTML/CSS changes; XAML Hot Reload breaks down as soon as you need to change any C# code that touches your UI.
- rubyfan 6y agoI don’t get why MSFT keep making the same thing over and over again. Who really cares about these abstraction layers. They produce junk apps by people who rarely care to keep up with them and go obsolete quickly.
- monkmartinez 6y agoIt's great! Iteration in the space is greatly appreciated by me. Eventually we will get the cross platform UI layer that just works. We will not get there by just running Electron, React Native and others. I am super happy MSFT is having go after go at this!
- xnyan 6y ago>I don’t get why MSFT keep making the same thing over and over again I give them props for trying. There's nothing I would use (yet), but I do respect the grind and trying to move past failed attempts.
- userbinator 6y agoOn the bright side, at least it's not Electron... That said, a decade ago I was not happy about .NET apps, but now they are already better than the norm --- besides the noticeably startup time, "only 2-3x more" memory consumption than the equivalent native app, and occasional pauses in the UI (GC?) they feel far more native and efficient than anything web-based. I'm a long-time Win32 programmer, so everything else feels slow and bloated.
- deleted 6y ago[deleted]
- crazypython 6y agoThe real "Write once, run anywhere" technology is the open web platform. Now with SIMD, WebGPU, Houdini, and more. Container queries built-in for responsive layouts. Run on touchscreens, virtual reality, desktop and more. I expect HTML/CSS/JS performance optimization to be valued as a skill more. It is arguably great cross-platform technology (though lacking native widgets), but it has a lot of performance footguns, which we need people to be disciplined about.
- ocdtrekkie 6y agoIf the "open web platform" stops requiring an entire Chromium engine in the app, I would agree. Or if Google wasn't the sole effective standards body for it.
- crazypython 6y ago> If the "open web platform" stops requiring an entire Chromium engine in the app, I would agree. PWA. FileSystem API is coming. > Or if Google wasn't the sole effective standards body for it. Agreed.
- alskdj21 6y agoI'm not well versed with PWA topics but as long as Apple doesn't curve around this, we can't expect a wide adaptation of it. Don't get me wrong, PWA can be the future but not without the whole Apple ecosystem missing.
- slipper1 6y agoLearn to ignore garbage companies like Apple if you don't want to be treated like garbage by them. They don't matter. If Safari does not support the latest and greatest, Safari is garbage and show this message on your website with big bold letters.
- staticelf 6y agoYou can use pwabuilder and ship a "native" app to Apple Appstore.
- tracker1 6y agoNo offense, but call me when there's any Linux desktop target option.
- ocdtrekkie 6y agoThis. And I'll feel like Microsoft intends a UI framework to have legs when it supports more languages than just C#. Traumatized VB .NET dev over here, who has mostly given up hope, lol. I just want to write VB and it work on a phone or a Linux box.
- cutler 6y agoIs it realistic to expect MS to support a language they purposely built a replacement for 18 years ago? What's stopped you "upgrading" to C# in 18 years?
- ocdtrekkie 6y agoI prefer VB. I have a degree in writing C#, I just find VB vastly preferable to work in. I hesitate to believe Python would exist in the way it does today if Microsoft hadn't treated VB so badly. It's only now being replaced as the default to teach in schools because of its simplicity and readability.
- tracker1 6y agoPython was built as an education/learning language first. It's popular because it's often a first language learned, and necessity in education/research space caused a lot of innovation over the years. The only thing I like about VB (.Net) is that it supports XML literal notation... which was crazy useful in the mid-2000's when dealing with Flash (it's own XML literal notation) as a data passing option. I know others that utilized that feature well for Xaml applications. I'd much rather just use C# at this point. Actually, I'd rather use JS (node/deno) or rust than C#.
- ocdtrekkie 6y ago
- dnndev 6y agoXAML? Ugh. For those of us who worked on wpf for years using xaml and then used react native this feel like someone still in denial at Microsoft. I guess I should be happy my xaml experience is still relevant...
- the_only_law 6y agoI think I would almost like XAML is the styling of components wasn’t so god awful.
- wvenable 6y agoXAML is great except for anything involving customization or styling. All they had to do was not make it worse than HTML/CSS...
- stefan_ 6y agoI agree, XAML and WPF are vastly superior.
- dnndev 6y agoWPF is rightly put out to pasture and Xaml should have gone with it. Tooling is terrible. So much lost productivity.
- spaetzleesser 6y agoYes, the tooling was the problem. The basic concept of XAML is great in my view. If they only had improved the tooling somewhat and reworked the syntax this would have been a winner.
- ripley12 6y agoFWIW, this will be supporting Blazor in addition to XAML. So you can have a MAUI app that just handles native hosting etc. and shows your actual UI in a web view. It's admittedly confusing and not all that well explained.
- cutler 6y agoLast time I looked the download overhead for Blazor was a non-starter for anything other than an intranet.
- aksss 6y agoI think the Blazor server version is okay for Internet insofar as initial dl is concerned, but the problem with Blazor server is scaling it since the signalr connection requires client affinity with the server. Or I believe that's still the case. I'm not expert, but I think there are some issues with horizontal scaling with server-side blazor. Maybe that's been fixed or there are good solutions for it.
- nirav72 6y agoClient affinity with server is due to Signalr. Since server-side blazor uses signalr to pass the changes between client & server. Might be a easy fix with sticky sessions. But haven't come across anyone that has tried it.
- aksss 6y agoYeah, I always assumed that you could put a load balancer in between to enforce the affinity across a farm, but I think the point is that dollar-for-dollar, the need to do that means it won’t scale well for a massively public app as well as other technologies (i.e. it will be more expensive to host).
- mycall 6y agoThere are attempts [0] to fix the download overhead in .NET 6. [0] https://jonhilton.net/blazor-prerendering-net6 https://jonhilton.net/blazor-prerendering-net6
- jayonsoftware 6y agoHow many front end frameworks does cross platform .NET has these days ?
- jmnicolas 6y agoYes.
- tracker1 6y agoI would say I'm hopeful for this to bear fruit. MS is in a much different position today than in the past. That said, my opinion still generally stands, When I see 3 versions from MS with cross platform support, at that point I'll consider it. For me, without a supported Linux target, it's pretty much a no-go. Having a single UI platform that gets you most of the way there is really nice. Part of why I actually like the embedded web options out there. If this gets a Linux target and shows decent output for Mac, Windows, Linux, Android and iOS, it will gain a lot of market share. For many, lack of Linux isn't even an issue, and that will likely spur some early adoption. Those who have been burned by Silverlight or Xamarin.Forms in the past, let alone other options, will be far more cautious.
- mycall 6y ago> When I see 3 versions from MS with cross platform support, at that point I'll consider it .NET Core 2.x (2019), .NET Core 3.x, .NET 5, .NET 6 (Sept 2021) Will you consider then?
- tracker1 6y agoI already consider .Net itself suitable for cross platform use. MAUI had no supported Linux target and no indication that it will be community adopted/done.
- deleted 6y ago[deleted]
- whalesalad 6y agoWould love to see/use demo apps, both from a source code standpoint and the user interactions. Until then this gives me Flutter vibes.
- mapmap 6y agoIs there any way to preview this on a mac? I see Visual Studio mac is not yet supported...
- nirav72 6y agoBut at least you have a 64-bit version of Visual Studio on the MAC. Something devs using windows have been wishing for long time. Supposedly VS 2022 is going to be the first 64-bit VS on windows.
- miguelrochefort 6y agoDoes anyone know how MAUI compares to Uno? https://github.com/unoplatform/uno https://github.com/unoplatform/uno
- sasakrsmanovic2 6y agoDocs show this https://platform.uno/docs/articles/intro.html#how-is-uno-platform-different-from-net-maui https://platform.uno/docs/articles/intro.html#how-is-uno-pla...
- drawkbox 6y agoBasically MAUI is the next phase of Xamarin/UWP as that was not fully ported on the UI side in .NET 5 which was the merging of .NET Framework 4.x and .NET Core 3.1. .NET 6 UI is essentially being replaced with this for .NET 6. I use Xamarin/UWP quite a bit for apps that also have to target Surface and it is great, the ability to use Xamarin.Forms and/or use CustomRenderers per platform is nice. This should follow similar lines and be ready for .NET 6 which is really the true final step in merging the .NET branches and fully making it cross-platform to the app level. Microsoft has truly been on the cross-platform aim for a long time now which makes developers happy, they do want to push users to use Azure which is really the new OS to them, but are open about platforms which is nice. This will be a great way to get apps across all platforms and another iteration of Xamarin which is excellent for that.
- bmitc 6y agoI think there’s some possibility of slight confusion by mixing Xamarin and UWP together. Xamarin (and thus .NET MAUI, which is cross platform) does not use the same flavor of XAMl as UWP (and thus WinUI, which is Windows only but shares the same XAML as Uno).
- drawkbox 6y agoYeah, UWP is a progression on WPF/Silverlight that had its own XAML as part of the platform code/declarative. Xamarin is from Mono and had its own XAML for Xamarin.Forms that underneath have build in Renderers for platform targets. Xamarin allows Shared or PCL that can be made for each platform iOS, Android, UWP etc. You can use CustomRenderers for each platform to access the native platforms and write code towards them or use Xamarin.Forms. Xamarin.Forms is what is being replaced really and the porting to .NET 6 for MAUI, with WinUI for the UWP targets. Both Xamarin and UWP have differing XAML because they had their own for the platforms they were on, Xamarin from Mono, UWP progression from other Microsoft tech. In a way this version merges that more closely but still can access directly. The default MAUI will use these targets per platform. If you override one you can implement it in direct platform. Xamarin is really just an abstraction around the platforms and some shared controls that have pre-baked renderers that do that for you. I don't really use XAML much though other than a stub to load Main, everything is done in code usually. Same way I build native apps directly, mostly code except where not possible or the team needs to edit them. For Xamarin I use Shared setup where I can use Xamarin.Forms (and soon MAUI) for ContentPages/Controls but where needed you can still use a CustomRenderer and override a control or access some properties that you want to edit, or create entire controls/sets that aren't shared across all targets as Xamarin creates a baseline between them and renders how each platform does. In those custom scenarios you might use UWP/WinUI if targeting UWP. If targeting iOS/Android it may be UIKit/Foundation or Android the Android libs Views/Graphics/Content etc. The Shared [1][2] setup and Xamarin.Forms or coming MAUI allow you to quickly get the app running on all platforms and then you can adjust as needed for specifics. Or do the whole thing natively per platform with custom and just manage it from Xamarin. It is flexible and great for prototypes quick and getting those to something that is shippable. The Shared setup this way is similar to the handler approach in MAUI where underneath the shared abstraction controls are converted into platform specific but you can do custom ones to override or combine controls. [1] https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/code-sharing https://docs.microsoft.com/en-us/xamarin/cross-platform/app-... [2] https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/shared-projects?tabs=macos https://docs.microsoft.com/en-us/xamarin/cross-platform/app-...
- emodendroket 6y agoHas anyone done much with this? I wouldn't mind moving on from Windows Forms but the stuff that's come after seems like evolutionary dead ends that weren't really worth my time, so far...
- starik36 6y agoOddly enough, if you don't care about cross platform and pixel perfect placement, Winforms are probably the sanest choice. It's been ported to .NET 5 and they fixed some of the high DPI issues of the past (more coming in .NET 6).
- emodendroket 6y agoHonestly I don't really mind Winforms except the messaging for a long time seemed to be "this is legacy technology."
- lostmsu 6y agoLately I've been using AvaloniaUI ( https://github.com/AvaloniaUI/Avalonia https://github.com/AvaloniaUI/Avalonia ) for all new projects. For most intents and purposes it is much easier to make single UI codebase work across platforms when behavior and look of components does not depend on quirks of native controls (which MAUI wraps).
- Ecstatify 6y agoFool me once shame on you, fool me twice shame on me. Windows phone/Xamarin, Microsoft really doesn’t understand what mobile developers want. What’s the point in investing to learn something when it will be in the hospice next year.
- publicola1990 6y agoWhats the story with Xamarin now? Does it have a present/future?
- andix 6y agoThere are two sides of Xamarin. It builds native apps and you can use their native UI systems. So you can build a native Android UI and a native iOS UI next to each other. This will give you perfectly native apps with the ability to share as much code as possible. The other side is Xamarin.Forms and its designated successor MAUI. Here you have the typical Microsoft UI problem. It is quite an unfinished framework. You can build everything with it, but if you do something else than the showcase app, you are going to have a difficult time. Xamarin is for sure not going to die soon.
- Yuioup 6y agoXamarin.Forms isn't just unfinished. It's total garbage. Plus you can't share UI code between Android and iOS. You still need to build the UI's natively with no code reuse. Plus building and cross-compiling between Windows and Mac is hacky and painfully slow. I wish Microsoft would get rid of Xamarin. Every Visual Studio update has a bugfix for it, usually relating to iOS.
- eddhead 6y agoIt's 100% UI code reuse between both platforms and MAUI takes it up to Mac and Windows. I've delivered several apps with more then hundred thousand users and the turnaround time for XF apps is generally 3-4x faster than native. You don't know what you're talking about clearly.
- dt3ft 6y ago.NET 6? Hold up, WPF was never really finished. This is demonstrated by existence of companies which sell lacking components that should otherwise have been included with WPF: Telerik, Infragistics, Syncfusion etc. Heck, creating a Report with out-of-the-box WPF is an unforgettable nightmare. I, for one, would prefer that Microsoft, instead of pumping all these half-finished "cool new toys", ships stable, performant, feature-complete software. We either have to buy 3rd party components, or write our own components from the ground up. Sure, they provide a Button or a Combobox, but good luck if you need anything slightly more complex, like a searchable GridView, autocomplete Combobox, Charts etc.
- Softcadbury 6y agoIt remains a framework at the end, same as React. The difference is there is less concurrence, and developers can price up their components.
- radicalbyte 6y agoI think that it was intentional. Microsoft often comes under pressure for competing with their suppliers and this was the one example where they didn't even try. It's also why no-one used WPF: without a grid it was worse than Visual Basic 6 for Microsoft's bread-and-butter business customers. This was a huge strategic misstep, as instead of hiring "WPF" developer you had to hire a "Telerik" or (shudder) "Infragistics" developer or spend a coupe of months extra onboarding new hires.
- pjmlp 6y agoLack of understanding why Telerik, Infragistics, Syncfusion etc. exist. A library with a rich ecosystem of third party vendors instead of the clunky GNU/Linux offerings.
- alkonaut 6y agoThe WPF grids are fine and autocompletion is trivial. Which is the proper way to write frameworks: make it easy to make the bits you don't have. I love that it isn't created like the old RAD frameworks where you are supposed to easily drop a datagrid in, connect to a DB and basically have some Line of Business CRUD on your screen within minutes. The Telerik/Syncfusion et.al. components are massive bloated and geared exactly towards that, and in order to do that they need to make a ton of assumptions about the MVVM/MVP/whetever architecture of the app. There are a few small omissions from WPF but I wouldn't say that the huge suites from Telerik and similar show that it's lacking.
- Const-me 6y agoThat thing is almost useless for the rich GUI I usually work on. I often need to integrate hardware-rendered pieces: 3D content, hardware decoded video, images computed by CUDA, etc. Technically the web has comparable things, WebGL and video element, but they are very limited compared to native stuff. Also usability is not great, JavaScript is too different from C and all these low-level multimedia related things are essentially C APIs.
- tonyedgecombe 6y agoWin32->MFC->ATL->WTL->Windows Forms->WPF->WinRT->UWP->WinUI->MAUI More churn, more abstraction, much of it feels unfinished. This is starting to make Electron look attractive.
- zerr 6y agoMany shops working on Windows desktop apps are stuck at WPF due to Windows 7 support.
- IceWreck 6y agoNo Linux support
- littlecranky67 6y agoNot even Linux UI libs have "full" Linux support, ui wise. There is GTK, Qt, Tk, Xlib, wxWidgets etc. A single GTK/Gnome App does not look "native" on KDE and vice versa. It is totally unclear if MAUI would support linux, what UI lib it should adopt and it would still not look native for lots of users.
- DonnyV 6y agoCan they really call it cross platform when Linux isn't officially supported?
- layoutIfNeeded 6y agoWhat the fuck is wrong with Microsoft these days? Why can’t they stick to a single UI library for more than a year? We don’t want n+1 incompatible UI frameworks. We want a single UI toolkit that you stay committed to, with rich controls and long-term support. I can’t believe that in 2021 WinForms is still the only sorta decent option to write Windows applications.
- rafaelvasco 6y agoAm and always will be a .NET fanboy but I've been out of the grid for some months. Pretty exciting to see things moving nicely.
- firemelt 6y agoanyone could tell me is blazor has feature like stimulusreflex/turbo hotwire/livewire from laravel/liveview from phoenix?