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.
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. |