Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal: New DockManager / Dockable Windows Control #668

Open
shaggygi opened this issue May 8, 2019 · 33 comments
Open

Proposal: New DockManager / Dockable Windows Control #668

shaggygi opened this issue May 8, 2019 · 33 comments
Labels
area-AppWindow feature proposal New feature proposal proposal-NewControl This proposal might involve creating a new control team-Controls Issue for the Controls team

Comments

@shaggygi
Copy link

shaggygi commented May 8, 2019

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.

@shaggygi shaggygi added the feature proposal New feature proposal label May 8, 2019
@mdtauk
Copy link
Contributor

mdtauk commented May 9, 2019

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
Copy link
Author

shaggygi commented May 9, 2019

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

@YuliKl YuliKl self-assigned this May 9, 2019
@jevansaks jevansaks changed the title Proposal: New DockManager Control Proposal: New DockManager / Dockable Windows Control Jun 14, 2019
@jevansaks
Copy link
Member

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

  • This is one of a popular Desktop apps modes, which UWP is currently lacking
  • Allows us to make apps who's layout is personalised by the user

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
Copy link

YuliKl commented Jul 22, 2019

Related feature request - #1080

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

@YuliKl YuliKl removed their assignment Jul 22, 2019
@shaggygi
Copy link
Author

@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
Copy link

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
Copy link

LouChiSoft commented May 27, 2021

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
Copy link

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:

  • Bloating our app with 10 MB of sloppy third-party code (they never get the docking stuff right).
  • Paying some license for a control which should have been there in the first place.
  • Maintaining some abandoned DockManager toolkit.
  • Writing our own docking system. Sure, but that means less time for cool features on our Windows app, and in the end less profit for Microsoft.

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
Copy link

RetroHQ commented Sep 3, 2021

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
Copy link

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

@sukesh-ak
Copy link

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
Copy link

+1

@carmangary
Copy link

carmangary commented Oct 1, 2022

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
Copy link

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
Copy link

fl0aty commented Feb 3, 2023

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
Copy link

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

@sukesh-ak
Copy link

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
Copy link

RetroHQ commented Feb 3, 2023

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
Copy link

sukesh-ak commented Feb 3, 2023

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
Copy link

RetroHQ commented Aug 20, 2023

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
Copy link

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
Copy link

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
Copy link

kmilch commented Feb 22, 2024

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

@jonasnordlund
Copy link

jonasnordlund commented Mar 8, 2024

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
Copy link

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

@carmangary
Copy link

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

@znakeeye
Copy link

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
Copy link

jonasnordlund commented Jul 18, 2024

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
Copy link

RetroHQ commented Jul 18, 2024

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
Copy link

carmangary commented Jul 18, 2024

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
Copy link

RetroHQ commented Jul 18, 2024

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

@kmilch
Copy link

kmilch commented Jul 18, 2024

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.

@Tartarusome
Copy link

从 .NET 9 开始,WPF 将内置对良好 Windows 11 样式和控件的支持,因此对于复杂的 LOB 应用程序等,更明智的前进方式可能是使用 WPF 与 AvalonDock 或类似的成熟停靠系统。您可以通过 FluentRibbon 11 及更高版本(在我撰写本文时处于 alpha 阶段)或 Coho.UI 获得不错的 Windows 11.0 功能区。如果您依赖早于 .NET 9 的 .NET 版本,您可以将 WPFUI 用于 Windows 11 样式,它支持低至 .NET Framework 4.6.2,实际上是 .NET 9 采用和集成的库。

I don't think so. Because Wpf has a lot of history problems.Such as using too many reflections, therefore is not able to support AOT. Meanwhile wpf is still a DiectX 9 thing, when Winui3 is based on DirectX 12, and Avalonia 11+ or C++ QT is based on Vulkan.
Just open a solution in vs2022's lastest version, which is a wpf app, and close this solution. Congratulations, you find a 100% memory leak.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-AppWindow feature proposal New feature proposal proposal-NewControl This proposal might involve creating a new control team-Controls Issue for the Controls team
Projects
None yet
Development

No branches or pull requests