[Windows/MacOS] Add a Tabbed window support
See original GitHub issueDescription
Hello.
It would be adorable if Maui had support for Tabbed windows at the window level. I tried looking at the MAUI documentation and found only support for a tab bar that would be a TabView. The current tab bar helps, but I don’t think it’s ideal for windows.
Tabbar (actual) .NET MAUI Shell tabs
Tabbed Window
The tab bar that we currently have is based on a mobile interface, not something native to the development of a desktop application.
WinUI currently has a component called TabView that is more in line with the tabbed window view of a desktop application. WinUI - TabView
On MacOS, all applications that use NSWindow automatically support NSWindowTab, so they can combine multiple windows into one window with content as tabs. Or open new instances of an application as if they were tabs. AppKit - NSWindowTab
TLTR Actual MAUI Implementation: iOS - Tab Bars MacOS - Tab View
Needed implementation, just for desktop apps: MacOS - Window Tab bar WinUI - Tab View (Display TabView tabs in a window’s titlebar)
Public API Changes
The same api from the TabView from WinUI.
<TabView AddTabButtonClick="TabView_AddTabButtonClick" TabCloseRequested="TabView_TabCloseRequested"/>
Intended Use-Case
Maui is a new tool that will make it much easier to create desktop applications that work natively on Windows and Mac. Dynamic tab support is needed to enable a new universe of document-based applications. The tabbed window allows the user to concentrate several instances of their applications in the same window, facilitating the exchange of contexts. Windows Terminal is an excellent example of a Tabbed Window. We also have rumours that Windows Explore will get tabs.
[WinUI’s Tab View](WinUI’s Tab View component and AppKit’s NSWindow already provide us with all the necessary options. We now need these accessible options.) component and AppKit’s NSWindow already provide us with all the necessary options. Now, we need these options exposed inside the MAUI.
Issue Analytics
- State:
- Created a year ago
- Reactions:38
- Comments:6
Top GitHub Comments
It would be also great if tabbed windows can support scoped dependency injection, i.e. a unique instance shared only within a window.
Tabbed windows allow users to easily switch between different files and documents without having to open multiple windows, which can be very convenient and save screen space. Additionally, tabbed windows typically provide a quick overview of all open documents, allowing users to quickly find and navigate between them. Overall, tabbed windows can greatly improve the user experience and productivity of desktop apps.