dotnet / maui

.NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
https://dot.net/maui
MIT License
22.03k stars 1.73k forks source link

MDI (Multiple document interface) #3438

Open Shadowblitz16 opened 2 years ago

Shadowblitz16 commented 2 years ago

Description

Can we have multiple document interface support in MAUI? It may be a outdated pattern for the most part, but it's still very useful for game editors but its also good for small single monitors.

While it may take some work behind the scenes of the maui api. It's public api is as simple as letting the user assign a window or control to another window's parent.

Public API Changes

var window = new Window();
var subWindow = new Window();
subWindow.Parent = window;
// or
var control = new Control();
var subWindow = new Window();
subWindow.Parent = control;

Intended Use-Case

For me it would be used in gamedev, however I have seen dentist offices use winforms MDI for their apps due to being limited to 1 small screen.

ghost commented 2 years ago

We've moved this issue to the Future milestone. This means that it is not going to be worked on for the coming release. We will reassess the issue following the current release and consider this item at that time.

Joebeazelman commented 2 years ago

I will go a step further and generalize it. MAUI needs multi-window interface support on the desktop, which is required for developing multiple document applications.

Single window interfaces are severely limited. You can only view and manipulate one document at a time in a modal fashion. This makes it difficult to cross-reference, or cut and paste data from another document. Some applications allow the user to open several instances of itself with different documents to get around it, but it's less than ideal and consumes unnecessary computing resources. It also wastes precious screen real estate by repeating common menus, panels, etc. instead of sharing them between documents. Moreover, a single window containing different types of content usually break up the window into multiple panels or panes sized relative to their enclosing window. Consequently, the user is forced to keep the window maximized in order to view the content in the panels.

Multiple windows, on the other hand, are far more flexible and empower the user to work very efficiently by having several documents open. Panes and panels can exist as separate windows which can be closed, collapse or hidden if not needed. They can also be positioned where it's convenient for the user as well as allow them to cut and paste or even drag-n-drop data between them. Many high end professional software, such as video, music and print, take full advantage of multiple windows.

It's impractical, however, to have more than one window per application on web and mobile devices, which is why it's not as popular as it once was. Developers, such as Microsoft, often chose a least common denominator approach where they target web, mobile and desktop with the same UI code. Treating these different form factors as the same underutilizes their inherent strengths, which results in a less than stellar product.

mouralabank commented 1 year ago

Any updates?

danielancines commented 1 year ago

Did you guys have any idea how to accomplish the following requirement: allow user to move views inside the window? MDI will be great, but I need something to do ASAP. :-)

mouralabank commented 1 year ago

Generally desktop platforms have many tools and every user has a way to assemble their workspace. With MDI the user can open multiple tools, move, minimize, maximize, resize and configure their work area as desired and is more useful in each situation.

Other benefits of MDI for desktop applications:

MDI can help improve productivity and user experience in desktop applications by providing a more efficient and organized way to manage multiple documents or windows

mouralabank commented 1 year ago

Here are a few more examples of desktop applications that use MDI:

MDI is widely used in financial/trading market applications. Where the system has several features and functionalities and each user has a preference of which and how to use, organization, size of each tool, being able to move and change places, minimize and maximize a resource…

Here are a few examples of desktop applications used in the financial market and trading that use MDI:

MaximMikhisor commented 1 year ago

+1

jilani-blend commented 1 year ago

I am still looking for such a workaround or options to add multiple tabs like we add in Browser, so we can work in the same form with different data.

exquirentibus commented 7 months ago

+1

danielancines commented 7 months ago

@jilani-blend you can achive this using Interop SetParent and control child windows with a tabcontrol.