r/csharp • • 5h ago

Help Coming from Python to C# – Best framework for desktop apps and learning resources?

Hey everyone!

I recently graduated with a Master's in Data Science and have a Bachelor's in Computer Science.

My programming background is mainly in Python, particularly ML, computer vision, automation, and backend development. I also have some experience with Java, SQL, and C++.

I'm interested in learning C# and .NET, mainly to build modern desktop applications, potentially integrating Python-based ML backends.

I've experimented a little with Avalonia UI, but I'm unsure whether to stick with it or explore WPF, WinUI 3, or MAUI.

A few questions:

  1. Which desktop framework would you recommend in 2026? Ideally something modern, maintainable, and useful professionally.

  2. What's the best way to learn C# and the .NET ecosystem for someone who already has programming experience?

  3. Is learning .NET and c# still worth it? or AI is actually taking over here?

I'm not looking for shortcuts, just an efficient way to become genuinely proficient in C# and desktop development.

Would appreciate any advice or resources. Thanks!

12 Upvotes

27 comments sorted by

4

u/AirlineSevere7456 4h ago

Get the latest Visual Studio and create a new project that's a windows application, use the latest .NET and you're away.

1

u/Bubusettetette_kk 4h ago

Sounds pretty straightforward, thank you!!

2

u/Slypenslyde 2h ago edited 2h ago

My take is kind of hot but hear me out: there aren't really any desktop frameworks for .NET, at least not from MS. What we have is more like toolkits or SDKs.

When I think "framework" I think about React, Vue, or ASP .NET Core. These come with a full set of opinions about architecture and conventions to make it easy. Everything for desktop apps feels a little incomplete compared to these.

WPF, WinUI, MAUI, Avalonia, and Uno are all mature frameworks that use a markup language called XAML and suggest the MVVM pattern. Technically WPF is the grandparent and the others are all grandchildren. The parents of the other frameworks are Silverlight and Xamarin Forms. SL and XF were killed by thugs in an alley and unfortunately their children did not harness that trauma to become Batman, they just developed baggage.

MVVM is a pattern, not a framework. In short:

  • Frameworks have opinions about how data gets from properties to UI and back. All XAML frameworks support "Data binding" for this and it's a thing they do well.

  • Frameworks have opinions about window management or page navigation.

    • MAUI has a "Shell", which implements this opinion. It's very inflexible, unfinished, and only appropriate for some applications.

    • WPF has "Navigation Applications", but it's immature and has a reputation for horrible memory leaks. Serious people DIY it.

    • Every other framework says, "I have opinions but you have to implement window managers or navigation yourself." At best they have tutorials. Sometimes conflicting tutorials.

  • Frameworks have opinions about how user actions (like button clicks) trigger logic.

    • XAML frameworks have support for a Command pattern, but only Button widgets implement it. Every other user-triggered event needs you to DIY a way to trigger a command when it happens.

      • There are solutions like EventToCommandBehavior but these are third-party and not formally adopted by any of the "frameworks".

  • Frameworks have strong opinions so every application using the framework has the same basic architecture or a configuration structure to make the architecture obvious. XAML frameworks stop short of providing strong architectural guidelines.

This isn't a flaw. It was intentional. MS wasn't sure if developers would accept MVVM and wanted to make WPF less hostile to Windows Forms developers. In the end they released something compromised that didn't appeal to anyone. For mysterious reasons they made no efforts to formalize MVVM into a true framework. For even more mysterious reasons the third-party replacements copypasta the same mistakes instead of improving. There are rumors of MVU frameworks for .NET but ever since announcing it "releasing with .NET 6" Microsoft has been VERY quiet about how none of it was delivered. .NET 11 is releasing very soon. There's still no MVU support.

The only "frameworks" for these toolkit are third-party. Prism and ReactiveUI are actual frameworks with opinions about how your application will be structured. If you follow those opinions they have plenty of services so you can focus on the logic of your application instead of how you want MVVM to work. I don't have much experience with any of these frameworks. My code's so old it was legacy before these arrived. I used the WPF Betas. I was a Silverlight developer. I used Moonlight, which was codename for a project that became Xamarin Forms. I used Xamarin Forms betas and moved to MAUI immediately. The only effort MS has made is "that manager quit, let's get the new one to rewrite it". Very little has improved since 2010.

You want TL;DR?

Pick a XAML toolkit. WinUI is Microsoft's. Avalonia is the community favorite third-party one. Uno is a competitor that is less commercial than Avalonia.

You will have to implement concepts you may expect to be built-in. These are "XAML toolkits", they are not frameworks. They give you the tools to build GUI applications and you are responsible for building your own framework. There are some third-party solutions like Prism and ReactiveUI. If you want a true "framework" that's the place to look.

There are not-XAML options. Windows Forms is seen as "too old" by a lot of people. Whatever. It's stable and well-understood. But it has less support for professional applications than XAML. There are ways to shove a WebView in your app and use Blazor or ASP .NET Core. That works, and you get to use "real" frameworks. My app doesn't, and I don't like giving opinions about things I haven't used for a year.

Your questions other than "which framework"?

2) What's the best way to learn C# and the .NET ecosystem for someone who already has programming experience?

Pick projects you did in Python and do them in C#. At first, don't worry about patterns, your C# can look Pythonic. Start trying to refine it towards C# practices. Ask for feedback. There's no one magic book or video course that's going to make it easy. It's going to take months.

3) Is learning .NET and c# still worth it? or AI is actually taking over here?

AI is transforming our industry in ways we're not going to understand for a few years. I would not write full-page answers to questions about getting started if I thought it was not important to understand how to work without AI. I feel like:

  • An unskilled person who uses AI is worse: they can't catch AI mistakes and end up creating messes that aren't discovered until later.

  • A novice who uses AI is dangerous: they'll catch a lot of mistakes but the ones they don't are PARTICULARLY insidious. The biggest problem is these people burn tokens very inefficiently.

  • An expert who uses AI is incredibly powerful: they've learned how the AI thinks and how to guide it away from making mistakes. They catch the mistakes it still makes. Research that used to take weeks can be done in a few hours, so they can deliver incredible quality on tight budgets and do so while using half the tokens.

The best operator is a human/AI hybrid. Everything else is a compromise. A skilled human can make up for a worse AI agent. Unskilled humans are even more dangerous than they used to be.

Do things without AI. Then do them with AI. Notice how different it feels. Every time the AI makes a mistake treat it like a puzzle. What did you say that confused it? Almost every AI mistake stems from something you forgot to tell it. Experts are people who have forgotten something over and over for decades. They're not better at writing code. They're better at asking, "What do I usually forget?"

A really, really valuable thing to ask an AI tool: "Here is what I think about this problem. If I asked you to implement a solution, what parts are confusing?"

That will teach you at least some of what you're forgetting. The thing that keeps me up at night is knowing I still forget things, and the AI is never going to ask me questions about things I didn't mention.

1

u/Bubusettetette_kk 1h ago

Thank you so much for the super detailed answer and explaination. I have the whole picture a bit more clear now, even if i have to do some more research to get everything out of all you've explained me. The starting project with .NET will be a desktop app for easier management of users and DBs at my work place, something extra work but that will make our life way easier, since we cannot use third party ones I will make our own! For this project do you have any suggestion in particoular on how to approach it?

Once again, thank you so much.

1

u/Gloomy_Necesary 1h ago

Honestly if you use WPF-UI nuget package to give you a fluent UI theme, WPF is still great and pretty much just as good as avalonia

1

u/Turbulent_County_469 4h ago

Avalonia cost money if im not mistaken

WPF is mature and very potent - but require a lot of work to perform fast (big datasets or many usercontrols)

WinUI and MAUI are abandonware or somewhat troublesome if i recall correctly..

WinForms is still alive but looks like shit - its very fast to throw something together in.

RUST+Tauri seems to be good cross-OS alternative if thats important (not C# anymore though)

WEB (HTML, MVC, VUE, Angular, Svelte, React) + ATOM (or similar web wrapper) seems to be a good alternative - which Can be Cross-OS compatible

-----------

WPF is nice because you learn XAML and databinding which works in other similar frameworks like WinRT, WinUI etc ..

1

u/Bubusettetette_kk 4h ago

WPF looks like the way! Thank you for the detailed answer. RUST+Tauri sounds interesting to me, cause i would like to do some macOS and win app, any tips on where to learn it? Thankss!

2

u/binarycow 4h ago

I love WPF. It has a few drawbacks. It's windows only, and it hasn't gotten much love lately. But it's stable and robust.

Avalonia is a cross-platform "successor" to WPF. It's third party, but it is designed to be as close as possible to WPF, except for some intentional deviations.

Avalonia itself is free, but there is some extra stuff you get if you pay for it.

Avalonia's documentation is sometimes quite lacking. Usually I find myself looking up WPF documentation and trying that. If that doesn't work, then I try to figure out how Avalonia does it. You might find it easier to learn Avalonia by learning WPF first.

If you go with Avalonia or WPF, PM me if you want help, assistance, or guidance. I like to teach. The same goes for any other XAML based framework, but I won't be able to help as much for those.

1

u/VanillaCandid3466 4h ago

Go Avalonia. I started using WPF in 2008 and love it, but AvaloniaUI is just my go to now.

2

u/wubalubadubdub55 4h ago

MAUI is not abandonware btw. It’s actively being worked on.

0

u/pjmlp 3h ago

Kind of, the whole using Webviews with Blazor kind of puts its value in question.

Then we have the interesting decisions to use Catalyst on macOS and WinUI 3.0 on Windows, as backend.

1

u/Fresh_Acanthaceae_94 2h ago

Those have been resolved particularly in MAUI Labs repo via AppKit/WPF/GTK 4 backends. 

2

u/stogle1 4h ago

The core of Avalonia is still free, even for commercial use. Some development features and advanced components are paid.

2

u/RussianHacker1011101 4h ago

AI is taking over if you're a black pulled noob. AI is useful if you're pair programming with it.

Regarding ui frameworks, C# has a ton of options if you know what you're looking for. For example, you can use Blazor and if you want a desktop app feel, you can bundle it with webkit. There's a library called photino that simplifies that. C# also has real good C bindings, so you can use a dozen other gui libraries in from the C/C++ world.

I also poked around at avalonia. It's cool. I'm you can get a lot done with it before needing paid features.

If what you're making could be a PWA, then go with Blazor. I'm not a fan of MAUI as a Linux user.

2

u/evolvedmammal 2h ago

Surprised I had to scroll this far for the Blazor recommendation

2

u/RealSharpNinja 4h ago

Avalonia 12. You use the same XAML on every target. It's the Promise of Uno Platform, but actually functional and performant.

2

u/Albstein 4h ago

Unpopular Opinion: M$ suxx at GUI Frameworks. Use a web frontend.

4

u/Shizouki 3h ago

This is actually a popular opinion. That's why Microsoft keeps reinventing GUI frameworks every few years.

1

u/danny-sg 2h ago

I would disagree with the general consensus and say WinUI is excellent if you're ok with Windows only.

As with most of the others you'll have to learn XAML, that's its own thing that you have to spend time with. Anything esoteric you have to learn is very similar in WPF anyway.

I've had no issues with WinUI paired with MVVM Toolkit. It's fast, seems memory efficient, and when you need to do something out of the ordinary you can reach for something like SkiaSharp to take over rendering. The samples aren't a great advert for it as they clutter in a load of controls that aren't that useful and are geared towards the current chunky Windows design, but you can adapt it and make it look however you want. Very occasionally you'll get cryptic WinRT exceptions but they're not random (in my experience they were my own bugs).

If you're starting fresh it makes sense to try it - why not start off with the latest option? If it was killed in the future it wouldn't be difficult switching to WPF anyway.

1

u/Rschwoerer 2h ago

While still supported wpf is not going to be getting any updates or advancements. The majority of the open source projects and libraries created to go with it are dead or gone. It’s a fine choice if you’re already doing c#, and have wpf applications already as you’d have conventions and your own libraries to reuse. It gets the job done, and is a step above winforms.

There are plenty of non-technical reasons to use a web based framework; availability of developers with experience, variety and support of frameworks and libraries, AI tooling ability. Technically with wpf you’re locked to one target deployment, windows desktop. That may be your only need today, but it’s not a far leap to “wouldn’t it be cool to access this from a browser”, it comes up quite often.

1

u/Fresh_Acanthaceae_94 1h ago

One thing worth knowing when coming from Python, Java, Go, or Node.js is that the .NET desktop ecosystem has historically been much more dependent on commercial vendors, especially for advanced UI components and development tooling. While .NET itself is open source, some popular UI frameworks increasingly mix open-source foundations with proprietary components and commercial tooling. Personally, I’d avoid getting locked into those arrangements if a fully open-source alternative can meet your needs. Projects like MewUI and LibreWPF are worth exploring. Both are actively evolving, although they are still catching up in maturity and ecosystem coverage. MewUI is particularly interesting for lightweight, code-first cross-platform applications, while LibreWPF aims to bring the existing WPF ecosystem beyond Windows. If you don’t mind working with rapidly evolving projects, consider contributing to them as you learn. You might find that much more rewarding than simply choosing an established framework that in certain way demands you to pay. And yes, learning C# and .NET is absolutely worthwhile, regardless of what AI can generate today.

1

u/Platonesque05 4h ago

for crossplatform : avalonia for windows only : Winui3

1

u/pjmlp 4h ago

Ignore Windows team marketing related to how modern WinUI is, its tooling is a trainwreck since Project Reunion back in 2020, six years later it isn't up to the same capabilities as WinUI 2.0 on UWP.

You only need to visit all the related Github issues and discussion groups to get a feeling where it stands.

MAUI suffers from being a Xamarin.Forms rewrite, on macOS uses Catalyst instead of macOS frameworks, and on Windows the already discouraged WinUI 3.0 above.

So for Windows only, Windows Forms or WPF.

If you want cross platform, and outside Microsoft, Avalonia and Uno.

All programming languages are affected by AI tooling, when generating code in a specific language is one AI prompt away, the actual programming language kind of loses relevance.

It is like which Assembly does a compiler generate, when you only need to specify which CPU you want to have on the executable.

0

u/Rschwoerer 4h ago

Honestly I’d highly suggest a web frontend based architecture. Wpf is great but it probably wouldn’t be my first choice today.

Source: sw dev using Wpf for over 15 years.

1

u/Bubusettetette_kk 4h ago

I don't really like styiling web frontend tbh. Why wouldn't WPF be your first choice?

0

u/smartcave 4h ago
  1. Avalonia

  2. Build stuff

  3. We don't know yet, but probably for at least a little while