Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
El Windows App SDK es la siguiente evolución en la plataforma de desarrollo de Windows app. Pero en este tema se muestra cómo puede usar las API de Windows App SDK (y las API de Windows Runtime) en una aplicación Windows Presentation Foundation (WPF)!
- En muchos casos, querrá volver a crear tu aplicación WPF en forma de una aplicación WinUI 3. Solo una de las ventajas de pasar a WinUI es tener acceso al Sistema de Diseño Fluent (consulte también Diseño y codificación de aplicaciones de Windows). Y WinUI forma parte del Windows App SDK, por lo que, naturalmente, una aplicación winUI también puede usar las otras características y API de Windows App SDK. En este tema no se trata el proceso de migración de la aplicación de WPF a WinUI.
- Pero si encuentra que usa características de WPF que aún no están disponibles en WinUI, puede seguir usando Windows App SDK características (como ciclo de vida de la aplicación, MRT Core, DWriteCore y otros) en la aplicación de WPF. En este tema te mostramos cómo.
Y en caso de que aún no tenga un proyecto WPF existente, o si desea practicar el proceso, este tema incluye los pasos para crear un proyecto WPF, de modo que pueda seguir los pasos y configurarlo para llamar a las APIs de Windows App SDK.
Requisitos previos
- Instalar herramientas para el Windows App SDK.
- En este tema se tratan las aplicaciones WPF empaquetadas y sin empaquetar. Si la aplicación de WPF está desempaquetada (que WPF aplicaciones son de forma predeterminada), asegúrese de que todas las dependencias de las aplicaciones sin empaquetar estén instaladas (consulte Windows App SDK guía de implementación para aplicaciones dependientes del marco empaquetadas con ubicación externa o sin empaquetar). Una forma rápida de hacerlo es visitar Últimas descargas para el SDK de aplicaciones de Windows, luego descargar, descomprimir y ejecutar una de las descargas estables del entorno de ejecución.
Importante
La versión de Runtime que instale debe coincidir con la versión del paquete NuGet Microsoft.WindowsAppSDK que instalará en un paso posterior.
Para obtener más información sobre los términos desempaquetada y empaquetada, consulte Ventajas y desventajas de empaquetar la aplicación.
Cree un WPF project si aún no tiene uno
Si ya tiene un WPF project, puede pasar a la sección siguiente.
- En Visual Studio, cree un nuevo proyecto WPF Application (que es un proyecto .NET). Tenga cuidado de elegir la plantilla de proyecto con el nombre exacto WPF Application y no la WPF App (.NET Framework) una.
- Asigne al project un nombre y acepte las opciones predeterminadas.
Ahora tiene un proyecto que construye una aplicación WPF sin empaquetar.
Configura tu proyecto WPF para la compatibilidad con Windows App SDK
En primer lugar, editaremos el archivo project.
En Solution Explorer, haga clic con el botón derecho en el proyecto y elija Editar archivo de proyecto.
Este paso permite llamar a Windows Runtime (WinRT) API (incluidas las API de Windows App SDK). Dentro del elemento PropertyGroup se encuentra el elemento TargetFramework, que se establece en un valor como net6.0. Anexe al valor del framework de destino un identificador (en concreto, un identificador del framework de destino). Por ejemplo, use lo siguiente si la aplicación tiene como destino Windows 10, versión 2004:
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>También dentro del elemento PropertyGroup, agregue un elemento RuntimeIdentifiers, como se muestra a continuación. Si el destino es .NET 8 o posterior, use el valor
win-x86;win-x64;win-arm64en su lugar.<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>De forma predeterminada, una aplicación de WPF está desempaquetada (lo que significa que no se instala mediante MSIX). Una aplicación sin empaquetar debe inicializar el entorno de ejecución de Windows App SDK antes de usar cualquier otra característica del Windows App SDK. Puede hacerlo automáticamente cuando la aplicación se inicie a través de la inicialización automática. Solo tiene que establecer (también dentro del elemento PropertyGroup) la propiedad del proyecto
WindowsPackageTypede manera adecuada, como sigue:<WindowsPackageType>None</WindowsPackageType>Si tiene necesidades avanzadas (como el control de errores personalizado o para cargar una versión específica del Windows App SDK), en lugar de auto-initialization puede llamar explícitamente a la API de arranque; para obtener más información, consulte Use el entorno de ejecución de Windows App SDK para aplicaciones empaquetadas con ubicación externa o sin empaquetar.
Guarde y cierre el archivo del proyecto.
A continuación, instalaremos el paquete NuGet Windows App SDK en el project.
- En Solution Explorer, haga clic con el botón derecho en el nodo Dependencies del project y elija Administrar paquetes Nuget... .
- En la ventana NuGet Package Manager, seleccione la pestaña Browse e instale el Latest stableMicrosoft.WindowsAppSDK.
Usar algunas características de Windows App SDK en la aplicación de WPF
En esta sección se ofrece un ejemplo muy sencillo de llamar a las API de Windows App SDK desde una aplicación de WPF. Usa la característica MRT Core (consulte Administración de recursos con MRT Core). Si este ejemplo funciona para su proyecto WPF (y si ha creado uno nuevo para esta guía, funcionará), puede seguir estos pasos.
Agregue el siguiente marcado a
MainWindow.xaml(puede pegarlo dentro de la raíz de Grid):<StackPanel> <Button HorizontalAlignment="Center" Click="Button_Click">Click me!</Button> <TextBlock HorizontalAlignment="Center" x:Name="myTextBlock">Hello, World!</TextBlock> </StackPanel>Ahora agregaremos código que usa la clase ResourceManager en el Windows App SDK para cargar un recurso de cadena.
Agregue un nuevo elemento Resources File (.resw) al project (déjelo con el nombre predeterminado de Resources.resw).
Con el archivo resources abierto en el editor, cree un nuevo recurso de cadena con las siguientes propiedades.
- Nombre: Message
- Valor: Hello, resources!
Guarde y cierre el archivo resources.
En
MainWindow.xaml.cs, agregue el siguiente código de controlador de eventos:
private void Button_Click(object sender, RoutedEventArgs e) { // Construct a resource manager using the resource index generated during build. var manager = new Microsoft.Windows.ApplicationModel.Resources.ResourceManager(); // Look up a string in the resources file using the string's name. myTextBlock.Text = manager.MainResourceMap.GetValue("Resources/Message").ValueAsString; }Compile el project y ejecute la aplicación. Haga clic en el botón para ver la cadena
Hello, resources!mostrada.
Sugerencia
Si en tiempo de ejecución ve un cuadro de mensaje que indica que la aplicación necesita una versión determinada del entorno de ejecución de Windows App y pregunta si desea instalarla ahora, haga clic en Yes. Eso le llevará a Últimas descargas para el Windows App SDK. Para obtener más información, consulte la sección Requisitos previos anterior.
Consulte también Runtime architecture para obtener más información sobre la Framework dependencia de paquetes que la aplicación toma cuando usa el Windows App SDK y los componentes adicionales necesarios para funcionar en una aplicación sin empaquetar.
Empaquetar e implementar la aplicación de WPF con MSIX
Algunas características y API de Windows (incluidas las API Windows App SDK notifications) requieren que la aplicación tenga package identity en tiempo de ejecución (es decir, la aplicación debe ser packaged). Para más información, consulte Características que requieren identidad del paquete.
- En Solution Explorer en Visual Studio, haga clic con el botón derecho en la solución y elija Agregar>Nuevo Project... .
- En el cuadro de diálogo Agregar un nuevo project, busque packaging, elija la plantilla C# Windows Application Packaging Project project y haga clic en Next.
- Asigne al project el nombre y haga clic en Crear.
- Queremos especificar qué aplicaciones de la solución se incluirán en el paquete. Por lo tanto, en el proyecto de empaquetado (no el proyecto WPF), haga clic con el botón derecho en el nodo Dependencias y elija Agregar referencia de proyecto....
- En la lista de proyectos de la solución, elija el WPF project y haga clic en OK.
- Expanda el nodo del proyecto de Dependencies>Applications y confirme que se hace referencia al proyecto WPF y se resalta en negrita. Esto significa que se usará como punto de partida para el paquete.
- Haga clic con el botón derecho en el proyecto de empaquetado y elija Establecer como Proyecto de Inicio.
- Haga clic con el botón derecho en el proyecto WPF y elija Editar archivo de proyecto.
- Elimine
<WindowsPackageType>None</WindowsPackageType>, guarde y cierre. - En la lista desplegable Plataformas de solución, elija x64 (en lugar de Cualquier CPU).
- Confirme que puede compilar y ejecutar.
Ahora que ha empaquetado la aplicación de WPF, puede llamar a las API que requieren la identidad del paquete. Por lo tanto, en MainWindow.xaml.cs, edite el controlador de eventos para que tenga este aspecto:
private void Button_Click(object sender, RoutedEventArgs e)
{
var notification = new AppNotificationBuilder()
.AddArgument("action", "viewConversation")
.AddArgument("conversationId", "9813")
.AddText("Andrew sent you a picture")
.AddText("Check this out, The Enchantments in Washington!")
.BuildNotification();
AppNotificationManager.Default.Show(notification);
}
Compile y vuelva a ejecutar. Haga clic en el botón y confirme que se muestra una notificación emergente. Cuando se llama desde un proceso que carece de identidad de paquete en tiempo de ejecución, las API de notificaciones producen una excepción.
Nota:
En los pasos de esta sección se muestra cómo crear una aplicación empaquetada. Una alternativa es crear una aplicación empaquetada con ubicación externa. Para obtener un recordatorio de todos estos términos, consulte Ventajas y desventajas de empaquetar la aplicación.
Temas relacionados
- Windows Presentation Foundation (WPF)
- Instalar herramientas para el Windows App SDK
- Windows App SDK guía de implementación para aplicaciones dependientes del marco empaquetadas con ubicación externa o sin empaquetar
- Últimas descargas para Windows App SDK
- Ventajas y desventajas del empaquetado de la aplicación
- Usar el entorno de ejecución de Windows App SDK para aplicaciones paquetizadas con ubicación externa o sin empaquetar
- Arquitectura del entorno de ejecución
- Características que requieren la identidad del paquete
Windows developer