Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Ayude a los usuarios a ser más productivos al permitirles ver partes independientes de la aplicación en ventanas independientes. Al crear varias ventanas para una aplicación, cada ventana se comporta de forma independiente. La barra de tareas muestra cada ventana por separado. Los usuarios pueden mover, cambiar de tamaño, mostrar y ocultar ventanas de aplicaciones de forma independiente y pueden cambiar entre ventanas de aplicaciones como si fueran aplicaciones independientes. Cada ventana funciona en su propio subproceso.
API importantes: ApplicationViewSwitcher, CreateNewView
¿Qué es una vista?
Una vista de aplicación es el emparejamiento 1:1 de un subproceso y una ventana que la aplicación usa para mostrar contenido. Se representa mediante un objeto Windows.ApplicationModel.Core.CoreApplicationView .
Las vistas se administran mediante el objeto CoreApplication . Llame a CoreApplication.CreateNewView para crear un objeto CoreApplicationView . El CoreApplicationView reúne una CoreWindow y un CoreDispatcher (almacenados en las propiedades CoreWindow y Dispatcher). Puedes pensar en el CoreApplicationView como el objeto que usa Windows Runtime para interactuar con el sistema principal de Windows.
Normalmente no trabajas directamente con el CoreApplicationView. En lugar de eso, Windows Runtime proporciona la clase ApplicationView en el espacio de nombres Windows.UI.ViewManagement. Esta clase proporciona propiedades, métodos y eventos que se usan cuando la aplicación interactúa con el sistema de ventanas. Para trabajar con una ApplicationView, llame al método estático ApplicationView.GetForCurrentView, que obtiene una instancia de ApplicationView asociada al subproceso actual de CoreApplicationView.
Del mismo modo, el framework XAML ajusta el objeto CoreWindow en un objeto Windows.UI.XAML.Window. En una aplicación XAML, normalmente interactúas con el objeto Window de en lugar de trabajar directamente con el CoreWindow.
Mostrar una nueva vista
Aunque cada diseño de aplicación es único, se recomienda incluir un botón "nueva ventana" en una ubicación predecible, como la esquina superior derecha del contenido que se puede abrir en una nueva ventana. Considere también la posibilidad de incluir una opción de menú contextual para "Abrir en una nueva ventana".
Echemos un vistazo a los pasos para crear una nueva vista. Aquí, la nueva vista se inicia en respuesta a un clic de botón.
private async void Button_Click(object sender, RoutedEventArgs e)
{
CoreApplicationView newView = CoreApplication.CreateNewView();
int newViewId = 0;
await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
Frame frame = new Frame();
frame.Navigate(typeof(SecondaryPage), null);
Window.Current.Content = frame;
// You have to activate the window in order to show it later.
Window.Current.Activate();
newViewId = ApplicationView.GetForCurrentView().Id;
});
bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
}
Para mostrar una nueva vista
Llame a CoreApplication.CreateNewView para crear una nueva ventana y un subproceso para el contenido de la vista.
CoreApplicationView newView = CoreApplication.CreateNewView();
Realice un seguimiento del id. de
de la nueva vista. Utilizas esto para mostrar la vista más adelante. Es posible que quiera considerar la posibilidad de crear alguna infraestructura en la aplicación para ayudar con el seguimiento de las vistas que cree. Consulte la clase
ViewLifetimeControl
en el ejemplo MultipleViews.int newViewId = 0;
En el nuevo subproceso, rellene la ventana.
Use el método CoreDispatcher.RunAsync para programar el trabajo en el subproceso de la interfaz de usuario para la nueva vista. Se usa una expresión lambda de para pasar una función como argumento al método RunAsync de. El trabajo que realiza en la función lambda se produce en el hilo de la nueva vista.
En XAML, normalmente agregas una frame de
a la la propiedad Content deWindow y, a continuación, navegas por el frame de a un página de XAML donde has definido el contenido de la aplicación. Para obtener más información sobre marcos y páginas, consulta navegación entre pares entre dos páginas. Después de rellenar el nuevo , debe llamar al método 's Activate para mostrar más adelante la ventana. Este trabajo se produce en el subproceso de la nueva vista, por lo que se activa la nueva Ventana.
Por último, obtenga el Id de la vista nueva que utilizará para mostrarla más adelante. De nuevo, este trabajo está en el subproceso de la nueva vista, de modo que
obtiene la Id deApplicationView.GetForCurrentView de la nueva vista. await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { Frame frame = new Frame(); frame.Navigate(typeof(SecondaryPage), null); Window.Current.Content = frame; // You have to activate the window in order to show it later. Window.Current.Activate(); newViewId = ApplicationView.GetForCurrentView().Id; });
Muestre la nueva vista llamando a ApplicationViewSwitcher.TryShowAsStandaloneAsync.
Después de crear una nueva vista, puede mostrarla en una nueva ventana llamando al método ApplicationViewSwitcher.TryShowAsStandaloneAsync . El parámetro viewId de este método es un entero que identifica de forma única cada una de las vistas de la aplicación. Puede recuperar la vista Id mediante la propiedad ApplicationView.Id o el método ApplicationView.GetApplicationViewIdForWindow.
bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
La vista principal
La primera vista que se crea cuando se inicia la aplicación se denomina vista principal. Esta vista se almacena en la propiedad
Si las vistas secundarias están abiertas, la ventana de la vista principal se puede ocultar, por ejemplo, haciendo clic en el botón Cerrar (x) de la barra de título de la ventana, pero su subproceso permanece activo. Llamar a
Vistas secundarias
Otras vistas, incluidas todas las vistas que se creen al llamar a CreateNewView en el código de tu aplicación, son vistas secundarias. Tanto la vista principal como las vistas secundarias se almacenan en la colección CoreApplication.Views . Normalmente, se crean vistas secundarias en respuesta a una acción del usuario. En algunos casos, el sistema crea vistas secundarias para la aplicación.
Nota:
Puedes usar la característica acceso asignado de Windows para ejecutar una aplicación en modo de pantalla completa. Al hacerlo, el sistema crea una vista secundaria para presentar la interfaz de usuario de la aplicación encima de la pantalla de bloqueo. No se permiten vistas secundarias creadas por la aplicación, por lo que si intenta mostrar su propia vista secundaria en modo de pantalla completa, se produce una excepción.
Cambiar de una vista a otra
Considere la posibilidad de proporcionar una manera de que el usuario navegue desde una ventana secundaria a su ventana primaria. Para ello, use el método ApplicationViewSwitcher.SwitchAsync . Llame a este método desde el subproceso de la ventana actual y pase el identificador de vista de la ventana a la que desea cambiar.
await ApplicationViewSwitcher.SwitchAsync(viewIdToShow);
Al usar SwitchAsync, puede elegir si desea cerrar la ventana inicial y quitarla de la barra de tareas especificando el valor de ApplicationViewSwitchingOptions.