Windows 11 introduce nuevas capacidades para la gestión de ventanas, entre ellas el Shared Window Mode, que permite que las aplicaciones modernas compartan múltiples ventanas como parte de una misma experiencia multitarea. Esta característica mejora el soporte nativo para escenarios como edición paralela, múltiples vistas, comparaciones en paralelo y workflows de aplicaciones productivas.
En este artículo se explora cómo utilizar esta API desde una aplicación moderna WinUI 3 utilizando Windows App SDK, gestionando múltiples ventanas, compartiéndolas dentro de un contexto común y habilitando integración visual con Snap Layouts y Alt+Tab de forma coherente.
Requisitos
- Windows 11 build 22621 o superior
- Visual Studio 2022
- Windows App SDK 1.3+ (preferido 1.4+)
- Proyecto empaquetado (MSIX) con soporte multi-ventana
Fundamento: ¿qué es Shared Window Mode?
Es un modo de presentación que permite agrupar múltiples ventanas dentro del mismo conjunto lógico del sistema operativo. A efectos del usuario, todas las ventanas se tratan como una única aplicación, tanto visualmente como en el sistema de tareas, Snap Layouts y la barra de tareas.
Paso 1: Crear una ventana secundaria en WinUI 3
public sealed partial class EditorWindow : Window
{
public EditorWindow()
{
this.InitializeComponent();
this.Title = "Editor Avanzado";
}
}
Desde MainWindow.xaml.cs
:
private void AbrirNuevaVentana_Click(object sender, RoutedEventArgs e)
{
var ventana = new EditorWindow();
ventana.Activate();
}
Esto crea una segunda ventana independiente.
Paso 2: Declarar el grupo de presentación compartida
Importar:
using Microsoft.UI.Windowing;
using Windows.UI.WindowManagement;
Crear el grupo de ventana compartida:
var presenter = AppWindowPresenter.CreateForContext("edicion");
presenter.GroupMode = AppWindowGroupMode.Shared;
A partir de Windows App SDK 1.4, se puede usar:
AppWindowGroup group = await AppWindowGroup.TryCreateAsync();
group.AddWindow(AppWindow.GetFromWindowId(windowId));
Esto agrupa ambas ventanas visualmente.
Paso 3: Activar Snap Layouts compartidos
El sistema operativo permite agrupar estas ventanas en Snap Layouts como si fueran parte de una sola app.
var mainAppWindow = AppWindow.GetFromWindowId(GetWindowIdForWindow(MainWindow));
var secondaryAppWindow = AppWindow.GetFromWindowId(GetWindowIdForWindow(EditorWindow));
await AppWindowGroup.CreateFromAppWindowsAsync(new[] { mainAppWindow, secondaryAppWindow });
Esto las unifica para minimizar, cerrar, agrupar en la barra de tareas y cambiar con Alt+Tab.
Paso 4: Controlar comportamiento individual
Cada ventana puede mantener sus controles independientes. Por ejemplo:
EditorWindow editor = new EditorWindow();
editor.ExtendsContentIntoTitleBar = true;
editor.AppWindow.SetIcon("Assets/editor.png");
editor.AppWindow.Resize(new Windows.Graphics.SizeInt32 { Width = 800, Height = 600 });
editor.Activate();
Paso 5: Comunicación entre ventanas
Usar static
o eventos para intercambio de datos:
public static Action<string>? OnGuardarNota;
private void Guardar_Click(object sender, RoutedEventArgs e)
{
OnGuardarNota?.Invoke(txtNota.Text);
}
En MainWindow
, suscribirse:
EditorWindow.OnGuardarNota = (nota) => NotasList.Items.Add(nota);
Casos de uso reales
- Aplicaciones con vista de edición y vista previa paralela
- Múltiples documentos (MDI) con organización automática
- Comparación de versiones, código o texto
- Edición por secciones o pestañas separadas
Buenas prácticas
- No sobrecargar al usuario con muchas ventanas simultáneas
- Dar control claro para cerrar o reabrir ventanas
- Persistir tamaño y posición si es relevante
- Usar iconos y títulos descriptivos para distinguir roles
- Evitar bloquear el hilo principal con la creación de ventanas
Conclusión
El Shared Window Mode en Windows 11 permite ofrecer una experiencia de usuario verdaderamente multitarea y flexible en apps modernas. Esta capacidad, combinada con WinUI 3 y Windows App SDK, habilita escenarios productivos, colaborativos y visuales que antes requerían soluciones complejas. Gracias a su integración con AppWindowGroup y Snap Layouts, las apps modernas pueden comportarse como verdaderos entornos profesionales de trabajo múltiple.
Ver también
- Construcción de un asistente contextual para escritorio usando IA local con acceso al sistema
- Integración de inferencia local ONNX con Windows ML en apps modernas
- Integración con servicios locales vía App Services y extensión de funcionalidades entre apps
- Implementación de Background Tasks persistentes en apps modernas
- Empaquetado de apps modernas con MSIX y configuración avanzada del manifiesto