Sobre el proyecto
ModernWPF es una biblioteca independiente mantenida por la comunidad que añade estilo Fluent y controles modernos inspirados en WinUI a aplicaciones de Windows Presentation Foundation (WPF). Se ejecuta directamente sobre WPF y no reemplaza el runtime de WPF ni actúa como WinUI.
Qué ofrece:
- Estilo Fluent para controles WPF estándar, con comportamiento de recursos claro, oscuro, de alto contraste y compacto.
- Adaptaciones a WPF de controles modernos como NavigationView, NumberBox, ContentDialog, InfoBar, CommandBarFlyout e ItemsRepeater.
- API de temas a nivel de aplicación, ventana y elemento.
- Marco de ventana moderno, integración de barra de título, asistentes de diseño y primitivas de recursos.
- Auditorías de compatibilidad respaldadas por código fuente, además de pruebas automatizadas de API, recursos, temas, accesibilidad, paquetes y runtime.
Relación con proyectos upstream: ModernWPF se basa directamente en dotnet/wpf y preserva el comportamiento de WPF. Para el estilo de controles estándar utiliza el tema Fluent de la plataforma en .NET 10 y un backport compatible en objetivos compatibles más antiguos. Los controles modernos adicionales se portan desde microsoft-ui-xaml donde WPF no tiene equivalente, con adaptaciones documentadas para WPF. El proyecto declara que no está afiliado ni respaldado por Microsoft.
Estado del proyecto: la línea 1.x es la línea de vista previa activa, con 1.0.0-preview.1 como primera base de auditoría y migración de API/recursos y una hoja de ruta hacia un release candidate con API congelada y una versión estable 1.0.0. La línea 0.9.x está congelada y sin soporte; no se planifican actualizaciones ni correcciones de seguridad, y no se promete compatibilidad de código fuente ni binaria con 0.9.x. Una guía de migración cubre cambios de framework de destino, entradas de recursos, API renombradas y la eliminación del adaptador de MahApps en 1.x.
Objetivos compatibles: net462 y net8.0-windows7.0 usan el backport Fluent de ModernWPF; net10.0-windows7.0 usa el tema oficial PresentationFramework.Fluent. Los activos retirados net45, netcoreapp3.0 y net5.0-windows no forman parte de 1.x.
Primeros pasos: instale una versión explícita de 1.x (por ejemplo, dotnet add package ModernWpfUI --version 1.0.0-rc.1) para que NuGet no seleccione un paquete 0.9.x congelado. Añada ThemeResources y FluentControlsResources a App.xaml, luego habilite el estilo de ModernWPF en una ventana con WindowHelper.UseModernWindowStyle y use controles del espacio de nombres XAML ui. Las aplicaciones que necesiten una migración por etapas pueden mantener temporalmente ThemeResources junto con XamlControlsResources.
Galería: ModernWpf.Gallery es el catálogo interactivo y ejemplo de desarrollo del repositorio, que demuestra controles, temas, marco de ventana, navegación, diálogos, flyouts y comportamiento de entrada. Es un ejemplo del proyecto, no la Galería oficial de WPF o WinUI de Microsoft. La compilación requiere Windows, el SDK seleccionado por global.json y la carga de trabajo de desarrollo de escritorio de .NET; net462 también necesita el .NET Framework 4.6.2 Developer Pack. Las compilaciones de solución y de pruebas no deben ejecutarse en paralelo porque los proyectos WPF pueden competir por archivos intermedios compartidos.
La documentación incluye la hoja de ruta 1.0, notas de versión para las vistas previas y el release candidate, una guía de migración de 0.9.x, un contrato de API pública de 1.x y un documento de paridad de código fuente con WinUI. Las contribuciones se canalizan a través de Discussions, un formulario estructurado de errores de vista previa e Issues, con cobertura de regresión esperada para los cambios.
Licencia: MIT. Las referencias al código fuente de WPF y WinUI conservan sus respectivos avisos y licencias upstream.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.