Migración de patrones de aplicación WPF a WinUI 3

WinUI 3 comparte muchos conceptos XAML con WPF y está optimizado para experiencias modernas de Windows. La mayoría de los patrones WPF tienen equivalentes directos en WinUI 3. En algunas áreas, WinUI 3 presenta un enfoque mejorado que reemplaza un patrón anterior y, en algunos casos, las características siguen en desarrollo activo.

En este tema se asignan patrones de WPF comunes a sus equivalentes de WinUI 3 para que pueda planear la migración.

Sugerencia

Para obtener instrucciones generales de WPF + SDK de Aplicaciones para Windows, consulte Use el SDK de Aplicaciones para Windows en un proyecto existente.

Controles

La mayoría de los controles WPF tienen equivalentes directos en WinUI 3. En la tabla siguiente se describen los controles en los que el mapeo no es uno a uno.

control WPF Equivalente a WinUI 3 Notas
DataGrid Sin equivalente de primera parte WinUI 3 no incluye dataGrid integrado. WinUI.TableView mantenido por la comunidad es una opción. Evalúe los proyectos de la comunidad en función de los requisitos de soporte técnico y mantenimiento.
Ribbon CommandBar / Community Toolkit Labs Considere CommandBar y CommandBarFlyout para escenarios de estilo de barra de herramientas. También hay disponible un control Ribbon en Community Toolkit Labs (experimental).
StatusBar InfoBar + diseño personalizado Use InfoBar para la mensajería de estado o agregue un área de pie de página dedicada al diseño.
FlowDocumentReader / FlowDocumentScrollViewer RichTextBlock Usa RichTextBlock para mostrar texto enriquecido no modificable. WinUI 3 adopta un enfoque diferente para documentar el contenido que es más adecuado para escenarios de aplicaciones modernas.
PasswordBox con SecureString PasswordBox PasswordBox de WinUI 3 proporciona enmascaramiento de contraseñas. SecureString está en desuso en .NET 5+; el enfoque recomendado es minimizar cuánto tiempo se mantienen las credenciales en la memoria mediante patrones ReadOnlySpan<char>.
WebBrowser WebView2 WebView2 usa el motor moderno de Microsoft Edge (Chromium) y es el enfoque recomendado para insertar contenido web en todos los tipos de aplicaciones de escritorio.

Características XAML

Xaml de WinUI 3 usa los mismos conceptos básicos que WPF: los diccionarios de recursos, los estilos, el enlace de datos y las extensiones de marcado funcionan de forma similar. Algunos patrones específicos de WPF han evolucionado en alternativas mejoradas y más componebles.

característica de WPF Enfoque de WinUI 3 Notas
DataTrigger / MultiTrigger Comportamientos (Kit de herramientas de la comunidad) WinUI 3 usa comportamientos adjuntos en lugar de desencadenadores insertados. El paquete Comportamientos XAML admite DataTriggerBehavior, EventTriggerBehaviory mucho más. Los comportamientos son más componibles y fáciles de probar unitariamente que los desencadenadores WPF.
DynamicResource ThemeResource ThemeResource proporciona búsqueda de recursos en tiempo de ejecución y responde automáticamente a los cambios de tema (claro, oscuro, contraste alto). Use StaticResource para los valores que nunca cambian en tiempo de ejecución.
MultiBinding / PriorityBinding Convertidores o x:Bind Use un convertidor de varios valores con enlaces individuales o use x:Bind con una propiedad calculada en el modelo de vista. x:Bind es compilado y seguro para tipos, lo que hace que sea más eficaz que Binding.
Style con BasedOn ✅ Soportado Herencia de estilo con BasedOn funciona en WinUI 3.
Estilos implícitos ✅ Soportado Los estilos implícitos del diccionario de recursos (estilos sin x:Key) funcionan según lo previsto.
AdornerLayer Enfoque de superposición personalizado WinUI 3 no tiene ningún equivalente de capa de adorno. Use una Canvas o Grid superposición en el diseño para lograr efectos de decoración visuales similares: este enfoque es más explícito y fácil de razonar.

Subprocesos y distribución

patrón de WPF Equivalente a WinUI 3 Notas
Dispatcher.Invoke / BeginInvoke DispatcherQueue.TryEnqueue WinUI 3 usa DispatcherQueue. El patrón asincrónico es await DispatcherQueue.EnqueueAsync(...) usando la extensión Community Toolkit.
Application.Current.Dispatcher DispatcherQueue.GetForCurrentThread() Capturar el DispatcherQueue en tiempo de construcción en el hilo de la interfaz de usuario y guardarlo para usarlo posteriormente en hilos en segundo plano.
BackgroundWorker Task / async-await Los patrones asincrónicos de .NET modernos son el enfoque correcto en WinUI 3. Task, CancellationTokeny IProgress<T> cubren todos los BackgroundWorker escenarios e integran naturalmente con x:Bind.

Modelo y ciclo de vida de la aplicación

concepto de WPF Equivalente a WinUI 3 Notas
Application.Startup / Exit eventos App.OnLaunched / Window.Closed WinUI 3 usa OnLaunched en App.xaml.cs como el punto de entrada. El desmontaje por ventana se controla en Window.Closed.
Application.Current.MainWindow La Window instancia Mantenga una referencia a la instancia de la ventana en App.xaml.cs y expósela como una propiedad.
Window subclasificación Personalización de AppWindow Las ventanas WinUI 3 se personalizan mediante AppWindow (barra de título, presentador, modos de superposición superpuestos, a pantalla completa o compacta) en lugar de subclasificar. Consulte Administrar ventanas de aplicaciones.
SystemParameters DisplayArea / UISettings Las propiedades de visualización del sistema están disponibles a través de DisplayArea y UISettings.

Recursos y localización

patrón de WPF Equivalente a WinUI 3 Notas
.resx archivos de recursos .resw + ResourceLoader WinUI 3 usa .resw archivos y la API ResourceLoader . El asistente de actualización de .NET puede automatizar gran parte de esta conversión.
x:Static extensión de marcado x:Bind a una propiedad estática Utilice x:Bind con una propiedad estática o un accesor singleton. x:Bind se compila y genera mensajes de error más claros que x:Static.
Diccionarios de recursos combinados ✅ Soportado ResourceDictionary.MergedDictionaries funciona en WinUI 3.
Diccionarios de recursos específicos del tema ✅ Soportado ResourceDictionary.ThemeDictionaries es el mecanismo de WinUI 3 para los recursos por tema y se integra con el cambio automático en modo oscuro/claro.

Impresión

característica de WPF Estado de WinUI 3 Notas
PrintDialog / PrintDocument PrintManager El soporte completo de impresión está disponible a través de PrintManager. Consulta Imprimir desde la aplicación.

Herramientas para desarrolladores

herramientas de WPF Estado de WinUI 3 Notas
Diseñador XAML (pestaña Diseño) Sin compatibilidad aún El diseñador XAML de Visual Studio no admite actualmente proyectos de WinUI 3. El uso de XAML Recarga activa se admite y es la manera recomendada de realizar iteraciones sobre el diseño y los estilos sin detener el depurador.
Blend para Visual Studio ⚠️ Compatibilidad limitada Blend se incluye con Visual Studio y puede abrir proyectos WinUI 3. El esquema del documento XAML es funcional, pero la vista Diseño no está disponible para WinUI 3.

Consulte también