.NETpad 2025: A Look Ahead to .NET 10 (Premium)

Early WPF plans for .NET 10

In 2024, Microsoft brought the Windows Presentation Foundation (WPF) back from the dead as part of .NET 9, adding Windows 11 theming support and a few other improvements. But its work was half-assed, with many bugs and functional omissions, including some I experienced and documented as part of my .NETpad modernization efforts. And so my hope for 2025, as I continue that work, is that Microsoft will address at least some of the many problems it introduced and advance WPF further, making it even more of a viable option for developers looking to create or update Windows apps.

I know. Naive.

What’s the saying about doing the same thing repeatedly and expecting a different outcome? I went into my .NETpad modernization work full of excitement, expecting Microsoft to follow up its initial pre-release support for WPF Windows 11 theming with more new features and improvements and, as importantly, the documentation to back it up. And so I plowed forward, knowing it could only get better.

It never got better.

Microsoft released its initial support for WPF Windows 11 theming in .NET 9 Preview 5 the week of Build 2025 … and then never once provided any further documentation or functional updates. It pushed forward with a steady cadence of .NET 9 preview releases throughout the summer, and then a series of release candidates that fall. But it never once updated WPF or its support for Windows 11. Not once.

So I did what I could. I focused on what I could get done in 2024 with the tools Microsoft provided, bugs and all. And by the time .NET 9 arrived right on cue in November, I was resigned to what I still see as an unprofessional lack of documentation and support. But I was surprised to discover that Microsoft finally documented a few additional features for WPF developers targeting Windows 11 theming in the initial stable release of .NET 9. And then further surprised when I discovered a few other changes, including the ability to change the app theme dynamically at runtime, a key feature I needed.

I’m not a professional developer, a point I try to drive home every time I tackle a particularly thorny topic. And after discovering the aforementioned feature, I was surprised to discover that .NETpad crashed repeatedly when I implemented it in the app. Naturally, I assumed it was me. And I spent (wasted) weeks, literally, trying to figure out what I had done wrong. Eventually, I discovered that it was tied to the WPF Expander control I was using–because that’s what Notepad uses, God damn it–in the settings interface. If I changed the app theme dynamically at runtime while using (or, oddly, after using) an Expander, it would crash. If there was no Expander, it worked fine. Huh.

I Googled this, as one would. And I what I eventually learned was that this was Microsoft’s fault: The bug was in the WPF code tied to Windows 11 theming. Microsoft acknowledged the bug, fixed it internally, and marked the issue closed. So I asked, “where” was this fixed? How could I get this fix? How might I fix the app that Microsoft broke with its buggy code?

Microsoft never responded, not once. Even though I tagged the employee who marked this issue fixed on GitHub, twice. No reply. And it’s not like these GitHub discussions are flooded with responses. I was one of just a few.

Unprofessional.

Fortunately, the fix arrived as part of .NET 9.0.1 in mid-January. One full month after I had requested information about this fix, directly to the employee who had made the fix. And heard nothing. Ah well, at least it was finally fixed. And so I updated the app in my own GitHub repository. I was already well underway towards the 2025 modernization work for .NETpad, which includes implementing tabs and session state, features WPF is ill-equipped to support.

What. Me worry?

Well, yes. I am worried. But as noted up top, I’ve been hoping that Microsoft will further improve WPF for Windows 11. Will fix more of the bugs it introduced, add the features it ignored last year, and otherwise fulfill the promises it made last May. Hope springs eternal, etc. And .NET 10 development has to start eventually. (Mid-February, if the .NET 9 schedule is any guide.) The questions are many, but they boil down to, will Microsoft announce anything related to WPF with .NET 10? And if so, what?

Last night, Rafael pinged me. It was about WPF.

I paused before clicking the link. Heard myself audibly sigh. This was it.

“In .NET 9, we laid the foundation for integrating the Fluent theme into WPF applications,” an employee identified only as dipeshmsft writes in a new discussion on GitHub. (And yes, this is the same person I pinged about the error I found, the person who never once responded to me.) “While there are still some areas to improve to make it comparable to the WinUI Fluent theme, as well as achieving parity with Aero2 and other WPF themes, we are actively working to address these gaps.”

Microsoft is tracking all the Fluent (i.e. Windows 11 theming) related issues in WPF/.NET 9 on GitHub, and if you visit that project, you’ll see issue lists for to-do, in progress, and done. I am interested in all of this, of course, but looking at “Missing control styles in Windows 11 themes,” I see a list of controls that aren’t correctly styled for Windows 11 that is a) longer than I expected, and b) at least does include the controls I’ve pointed out as being problematic or non-existent. So I will follow this closely and see what, if anything, comes of this.

Microsoft is also considering making the Windows 11 theme the default going forward. This is obviously the right decision. Windows 11 is the modern Windows UI and will soon be the only supported Windows version, plus Windows 11 apps look fine in Windows 10. Just do it, for f’s sake.

Microsoft is considering adding Windows backdrop support (Mica and Acrylic) to WPF, also necessary. It is looking at allowing developers to configure the rounded corner radii on individual controls, which is fine but feels less necessary. It is going to formalize the APIs that WPF uses for theming, all good. And it is considering addressing several other related issues. Whatever.

Given the lackluster nature of what this team—or a handful of individuals, is what it feels like–accomplished last year, I have serious doubts about what it will do in the .NET 10 timeframe and how well it will document that work. I want to believe. I would like this work to benefit .NETpad, to make my tabs, multiple documents, and session state work easier. I would like all kinds of things.

But 2024 was a sobering slap in the face to my expectations after the initial exuberance. And I am worried that I will only be disappointed by these non-responsive and unprofessional people yet again. So I will lurk. And wait. And hope. But I will be more realistic in my expectations as well. I cannot rely on any of this.

I will keep going.

Gain unlimited access to Premium articles.

With technology shaping our everyday lives, how could we not dig deeper?

Thurrott Premium delivers an honest and thorough perspective about the technologies we use and rely on everyday. Discover deeper content as a Premium member.

Tagged with

Share post

Thurrott