microsoft / microsoft-ui-xaml

Windows UI Library: the latest Windows 10 native controls and Fluent styles for your applications
MIT License
6.27k stars 674 forks source link

Proposal: New DockManager / Dockable Windows Control #668

Open shaggygi opened 5 years ago

shaggygi commented 5 years ago

Summary

It would be nice to have a new DockManager control similar to how Visual Studio and AvalonDock works.

Rationale

This type of control can be used for many LOB-type apps and has been missing as a 1st-class control for some time. With my limited knowledge of where WinUI is headed, it does seem like a control that would be helpful.

mdtauk commented 5 years ago

Would this control need a DockablePanel control which contains XAML that fills the space, and then that panel handles the dragging and triggers the hint icons on the DockManager panel which contains the app's UI?

shaggygi commented 5 years ago

@mdtauk Great point. I think there will need to be a few supporting controls, as well. Similar to TabItem under the TabControl.

jevansaks commented 5 years ago

Bringing @harvinders proposal's description over here:

Proposal: Dockable Windows

Summary

Add support for dockable windows that can be docked to a window like what we have in Visual Studio

Rationale

Scope

Capability Priority
Dock window Must
Dock window container control, inside which the dock window docks Must
Dock window container (inside) dock options (top,bottom,center,left,right) Must
Undock options (float) Must
Dock options to any window (outside) (top,bottom,left,right) Should
YuliKl commented 5 years ago

Related feature request - #1080

We definitely need additional innovation in this space but won't be able to begin implementation until after WinUI 3.

shaggygi commented 5 years ago

@YuliKl

We definitely need additional innovation in this space but won't be able to begin implementation until after WinUI 3.

That is completely understandable. I'm very glad the team is considering this control. Look forward to WinUI 3.0 and future goodness 😄

carmineos commented 4 years ago

Both WinForms (dockpanelsuite) and WPF (AvalonDock) have widely used third-party controls for docking. Another good example would be UWP Docking Control by Syncfusion. Having a control like this would make easier to migrate apps to WinUI.

LouChiSoft commented 3 years ago

Is there any progress on this feature? It seems like there hasn't been update in over a year and I would say that this seems like a pretty critical feature is Microsoft are truly aiming to make WinUI 3 the new default UI for Windows apps. Right now I am in the early stages of writing some graphical profiling software and evaluating what UI technologies are available out there, and when it comes to WinUI 3 not having an easy method of moving panels/dockable windows between areas to match the users needs seems like a huge oversight. I asked about this feature in #4784 and was told to put forward a feature request but it seems like the request is already here, it's just not made any progress and has not been addressed in two of last years community calls when brought up.

They way I see it is that if I wanted to have what most would consider a pretty standard feature in software tools I would be best off using some combination of SDL2/Dear Imgui or a third party library for WPF/WinForms. This means that I wouldn't be able to take advantage of other WinUI 3 features which is a shame as for the most part WinUI 3 seems like a solid UI framework.

Is this feature still in consideration, or would it be something that is likely to be left to third parties again as with dockpanelsuite and AvalonDock?

znakeeye commented 3 years ago

Well that's a bummer. WinUI 3 certainly looks like the WPF savior we all have been waiting for. I'm honestly very excited, but... creating a modern Desktop app without docking panes?! You have got to be kidding me!

This means we again have to go through the hassle of:

Name one other UI platform where you immediately need to look for commercial alternatives! iOS? Android? 😆

"Now introducing WinUI 4 for Android. Scroll viewer? Nah, it's on our todo-list."

RetroHQ commented 3 years ago

Just to keep the ball rolling on the fact that this is an absolutely essential feature.

I've been keeping an eye on the whole WinUI3 / Windows App SDK for a while and in particular docking windows / mdi. This is an absolutely essential feature for desktop productivity apps and any tool I have been considering writing of late. Quite literally every program I use for development on a daily basis uses this interface paradigm and it is absolutely essential.

Have I mentioned it's absolutely essential? I think I did.

For me, quite honestly, until there is SOME kind of docking / mdi type support (even 3rd party) it really does just feel like a toy for creating mobile-phone-wannabe-apps.

MFC, some 30 years on, is still more attractive for those wanting to develop C++ based productivity apps on Windows. I'm not interested in moving to C# just for the UI only to jump through all the hoops required to then leverage the C++ codebase I require under the hood.

WinUI3 is nearly the thing of my dreams, finally bringing modern Windows GUI support back to C++. Make it happen. :)

SkinnySackboy commented 2 years ago

Commenting to keep this alive - this is absolutely essential for us to consider moving off WPF.

sukesh-ak commented 2 years ago

Any update on this?

I have a new project for which this is required. Played around with UWP control from SyncFusion. Time to jump on WinUI3 but this control is essential for the project.

MaximMikhisor commented 2 years ago

+1

carmangary commented 1 year ago

I definitely want to upvote this feature request. Docking panels is an integral part of my MFC desktop application that I want to convert to WinUI3.

MaximMikhisor commented 1 year ago

I definitely want to upvote this feature request. Docking panels is an integral part of my MFC desktop application that I want to convert to WinUI3.

Same things. We also want to convert WPF to WinUI3.

fl0aty commented 1 year ago

Please implement this feature. WinUI3 looks very promising, as UWP looked back in the day. But both are lacking the docking panes / MDF feature which is a bummer and is the sole reason not to move over from WPF.

A true, modern desktop application not only has to look good but also needs a lot of flexibility for the user to justify the need of a desktop application for him in the first place. There are a lot of business applications out there that need this kind of flexibility.

SkinnySackboy commented 1 year ago

@fl0aty for enterprise apps I cannot upvote your comment enough. It's basically a showstopper not having this for us.

sukesh-ak commented 1 year ago

I moved to this since waiting is waste of time from my experience. This is C++ though its easy.

https://github.com/sukesh-ak/ImGui-GLFW-OpenGL3

RetroHQ commented 1 year ago

ImGui is a completely different UI paradigm, though, it's not always appropriate. The lack of support for this is totally bizarre to me. The only real option currently is having a C# front end with C++ back end, or using QT.

sukesh-ak commented 1 year ago

ImGui is a completely different UI paradigm, though, it's not always appropriate. The lack of support for this is totally bizarre to me. The only real option currently is having a C# front end with C++ back end, or using QT.

There is a C# option as a wrapper too https://github.com/mellinoe/ImGui.NET

After WinForms Microsoft UI frameworks have not been a stable reliable platform.

Have gone through the entire rollercoaster ride of Silverlight,WPF,UWP now WinUI. MAUI too since I need multi-platform support.

RetroHQ commented 1 year ago

Another random revisit of this topic as I consider what UI API might be useful again in C++ land. And nothing appears to have changed on this absolutely essential feature. 🙄

It might be time to bite the bullet and use Qt… or just dig out the MFC libraries again.

untimated commented 9 months ago

came in 2023, seeing posts over years and still no progress really scares me to full dive to WinUi. Hope this feature will be out one day...

Having Official solution is always my preference over opensource or 3rd party solution. For now perhaps going back to win32 is the answer.

carmangary commented 9 months ago

I am puzzled by the lack of evolution of the Windows UI development stack. WPF and WinUI seemed promising but more difficult to use than WinForms and MFC and did not have some of the critical features needed for rich business style applications. I kind of lost interest in Windows development for that reason. I'd love to see some sort of roadmap for Windows UI enrichment.

kmilch commented 6 months ago

Ditto carmangary! What the heck? Maybe I will move to QT. Can QT host a Win32 window?

jonasnordlund commented 6 months ago

I honestly think the WinUI 3 tab control should be generalized to this. AvalonDock supports simply having them all fill their container as layered documents and then it basically becomes a tab control with tabs to change views. Then you can tear off a tab and dock them side-by-side, collapse the panes, etc.

The obvious benefit of this is that all WinUI apps with tabs would automatically gain docking support, although this could of course be opt-in on the control e.g. IsDockable so that grandfathered apps are still in control of the possible configurations.

We're in both this case and a tab control really only discussing interactive management of multiple documents within a container.

I agree with others that powerful management of documents within a container is a common enough use case that WinUI ought to support it with dedicated logic.

kokashking commented 1 month ago

Its gone already 5 years since the proposal... dont feel like any cares....

carmangary commented 1 month ago

Seems as though Microsoft stopped caring about desktop developers, at least. Azure is their cash cow now.

znakeeye commented 1 month ago

Now, three years later, I have to say that I no longer care about WinUI dock managers 😝.

We spent a few weeks trying to migrate a tiny version of our WPF application to WinUI. We're not convinced, to say the least.

Maybe in another three years...

jonasnordlund commented 1 month ago

Starting with .NET 9, WPF will have built-in support for good Windows 11 styling and controls, so a more sensible way forward here for complex LOB applications etc. might be WPF with AvalonDock or a similar mature docking system. You can get decent Windows 11 ribbons via FluentRibbon 11.0 onwards (in alpha as I'm writing this), or Coho.UI. If you depend on .NET versions older than .NET 9, you can use WPFUI for the Windows 11 styling which supports down to .NET Framework 4.6.2 and is in fact the library that .NET 9 adopted and integrated.

RetroHQ commented 1 month ago

The whole point for me is that WinUI naively supports C++. If I wanted to jump through hoops and use C#, WPF, etc, then that's always been there. If you have a codebase you want to leverage in C++, it's far nicer to have the option to keep everything in C++. MFC or QT are really the only sensible solutions to do this. It really is insane, imo, that this has been left to stagnate as it has. I guess using C++ is not something the masses do these days?

carmangary commented 1 month ago

I agree with the above. I have and still support a multimedia application written in C++ using MFC that has docking tabs. I spent a lot of time porting it from C# due to C# being a pain to deal with DirectX and also because it was so easily hackable due to ease of decompilation, even when obfuscated. There was a noteable increase in application performance when moving to C++.

C# is cute and capable for a lot of stuff but it is not a good option for the type of development I want to do. I'm not asking for much. Just have WinUI match the level of capabilities that MFC had decades ago and improve upon it.

RetroHQ commented 1 month ago

This hits the point home for me. Can we just have the same level of features we had 20 years ago, please?

kmilch commented 1 month ago

VS2022 version 17.10.4 - Tried to create Blank App, C++ WinUI 3 in Desktop. VS Created 911 files in 356 folders. Tried to build and had 8 errors. Good grief.