dotnet / wpf

WPF is a .NET Core UI framework for building Windows desktop applications.
MIT License
6.93k stars 1.15k forks source link

Windows 11 Themes: Update the behaviours of various controls to be more modern/inline with WinUI #9203

Open aquinn39 opened 1 month ago

aquinn39 commented 1 month ago

It's great that the WPF visual styles are finally being updated for Windows 11, however, looking at the sample app, it seems all these changes are purely visual - WPF still has many behaviours that reflect the behaviours of the GDI Common Controls from 2006 - 2012 era. Part of modernising the UI is not just giving it a fresh coat of paint to hide all the old things, but to update everything - both visuals and behaviour - to offer a better user experience. Specifically, these are the things I've noticed so far:

I think updating many of these things is important, otherwise WPF looks nice on the outside, but when you go to use a WPF app, it still behaves as if it's running on Windows Vista or 7 in many ways.

lindexi commented 1 month ago

WPF still uses WISP instead of pointer events by default

Pointer still has a lot of problems, such as https://github.com/dotnet/wpf/issues/8517 and so on.

But the core problem is that WPF's touch and mouse are separate from multiple different events. And at the bottom of Windows 10 or Windows 11 WM_Pointer and WISP(RealTimeStylus) are the same set of things.

aquinn39 commented 4 weeks ago

To add to my point about WISP, https://github.com/dotnet/wpf/issues/8435 would need to be fixed if pointer events were made the default, otherwise all WPF apps would crash on launch on Surface Pro 9s.

lindexi commented 4 weeks ago

@aquinn39 I do not know if it's Surface's problem or Wpf's problem. Do you think WPF should be compatible with Surface Pro behavior?

aquinn39 commented 4 weeks ago

@lindexi Yeah I'm not sure, I'm just documenting it here. To me it seems like a Surface Pro 9 issue since I don't see why the minimum value should be greater than the maximum value. Still though, maybe WPF should resort to disabling its touch support or something instead of bringing down the whole application in this scenario?