Información general y notas de la versión: WinUI 3 - Project Reunion 0.8 Preview (mayo de 2021)

WinUI 3 es un marco de experiencia de usuario nativo (UX) para crear aplicaciones modernas de Windows. Se distribuye independientemente del sistema operativo Windows como parte de Project Reunion (ahora denominado SDK de Aplicaciones para Windows). La versión preliminar 0.8 proporciona plantillas de WinUI 3 en Visual Studio para ayudarle a empezar a compilar aplicaciones con una interfaz de usuario basada en WinUI 3.

WinUI 3- Project Reunion 0.8 Preview es una versión preliminar de WinUI 3 que incluye correcciones de errores, mejoras generales y características experimentales, algunas de las cuales se estabilizarán para la versión estable de SDK de Aplicaciones para Windows 0.8 en junio de 2021.

Importante

Esta versión preliminar está pensada para la evaluación temprana y para recopilar comentarios de la comunidad de desarrolladores. NO debe usarse para aplicaciones de producción.

Si quiere enviar una aplicación de producción con Project Reunion y WinUI 3, consulte Información general y notas de la versión: WinUI 3 - Project Reunion 0.5.

Utilice el repositorio de GitHub de WinUI para proporcionar comentarios y registrar sugerencias y problemas.

Nota:

Project Reunion es el nombre de código anterior del SDK de aplicaciones de Windows. Esta documentación sigue usando Project Reunion al hacer referencia a versiones anteriores que usaron este nombre de código.

Instalación de WinUI 3: Project Reunion 0.8 (versión preliminar)

Esta versión de WinUI 3 está disponible como parte de la versión preliminar de Project Reunion 0.8. Para instalarlo, consulte:

Instalación de herramientas para canales experimentales y de versión preliminar del SDK de aplicaciones de Windows

Dado que WinUI se distribuye como parte de Project Reunion, descargará la extensión de Visual Studio de Project Reunion (VSIX) para empezar, que incluye un conjunto de herramientas y componentes de desarrollo. Para obtener más información sobre el paquete de Project Reunion, consulte Implementación de aplicaciones que usan el SDK de aplicaciones de Windows. El VSIX del SDK de aplicaciones de Windows incluye plantillas de WinUI 3 en Visual Studio que usarás para compilar la aplicación WinUI.

Nota:

Para ver los controles y características de WinUI 3 en acción, puede clonar y compilar la Galería de WinUI 3 desde GitHub o descargarlo desde el Microsoft Store.

Una vez que haya configurado el entorno de desarrollo, consulte Plantillas de WinUI 3 en Visual Studio para familiarizarse con las plantillas de elemento y proyecto de Visual Studio disponibles.

Para obtener más información sobre cómo empezar a crear una aplicación WinUI, consulte los artículos siguientes:

Además de las limitaciones y los problemas conocidos, compilar una aplicación con los proyectos de WinUI es similar a compilar una aplicación para UWP con XAML y WinUI 2. Por lo tanto, la mayoría de la documentación de instrucciones para aplicaciones para UWP y los espacios de nombres Windows.UI WinRT en Windows SDK son aplicables.

La documentación de referencia de la API de WinUI 3 está disponible aquí: Referencia de API de WinUI 3

WebView2

Para usar WebView2 con esta versión de WinUI 3, descargue el Evergreen Bootstrapper o el Instalador Independiente de Evergreen que se encuentran en esta página si aún no tiene instalado el entorno de ejecución de WebView2.

Kit de herramientas de la comunidad de Windows

Si usa windows Community Toolkit, descargue la versión más reciente.

Compatibilidad con Visual Studio

Para aprovechar las características de herramientas más recientes agregadas a WinUI 3, como Recarga activa, Árbol visual dinámico y Explorador de propiedades en directo, debe usar una versión preliminar de Visual Studio 2019 16.10. Tenga en cuenta que las versiones preliminares de Visual Studio son productos de versión preliminar, por lo que puede encontrarse con errores y limitaciones al usar versiones preliminares de Visual Studio para compilar aplicaciones winUI.

En la tabla siguiente se muestra la compatibilidad de las versiones de Visual Studio 2019 con WinUI 3 - Project Reunion 0.5.

Versión de VS WinUI 3 - Project Reunion 0.5
16.8 No
16,9 Sí, pero sin Recarga activa, Live Visual Tree, o Live Property Explorer
Versiones preliminares 16.10 Sí, con todas las herramientas winUI 3 (en versión preliminar)

Actualización de la aplicación WinUI existente

Si ha creado una aplicación con una versión preliminar anterior o estable de WinUI 3, puede actualizar el proyecto para usar WinUI 3 - Project Reunion 0.8 Preview. Para obtener instrucciones, consulte Actualización de proyectos existentes a la versión más reciente de Project Reunion.

Cambios importantes introducidos en esta versión

  • El control Pivot ya está disponible para su uso en esta versión.
  • La mayoría de las correcciones de errores críticas de Project Reunion v0.5.5, v0.5.6 y v0.5.7 también se incluyen en esta versión. Para ver las correcciones de mantenimiento que no se han convertido en esta versión preliminar, consulte Problemas conocidos.

Lista de errores corregidos en WinUI 3: Project Reunion 0.8 Preview

  • x:Bind no funciona en un elemento MenuFlyoutItem personalizado (más generalmente, x:Bind en ControlTemplate no funciona si el ámbito de nombres primario también usa x:Bind)

  • Ocultar las ventanas emergentes cuando se mueva la ventana superior (o isla)

  • Página StandardUICommand de la Galería de WinUI 3 que no muestra todo

  • El clic con el botón derecho del mouse en TextBox bloquea la aplicación

  • Menú contextual mostrado en la ubicación incorrecta de EditableComboBox

  • Cambiar la selección de RichTextBlock con la función táctil hace que el indicador de selección desaparezca

  • Excepción de Microsoft C++: winrt::hresult_error en la ubicación de memoria 0x... cuando se está utilizando NavigationView

  • El mensaje de error winUI 3 necesita una nueva redacción: "No se puede resolver "Windows.metadata". Instale el Kit de desarrollo de software de Windows. Windows SDK se instala con Visual Studio".

  • La singularidad del establecedor de VSM de generar una excepción tiene la lógica al revés

  • Se quita el foco de WebView2 (si es necesario) cuando se bloquea el proceso del explorador

  • El elemento ProgressBar no muestra la diferencia entre las opciones En pausa y Error

  • PointerReplay se ejecuta constantemente

  • El elemento NavigationView provoca un bloqueo en UWP, Reunion 0.5 versión preliminar

  • AutoSuggestBox, ComboBox y CommandBarFlyout no están estableciendo ShouldConstrainToRootBounds="false" en sus ventanas emergentes.

  • WinUI 3: Project Reunion 0.5 que genera excepciones de C++ para una aplicación administrada de C#

  • Se perdió el foco de pestaña inicial de WebView2

  • WebView2 se bloquea cuando cambia el DPI después de Close()

  • Mejora en la apariencia de AppBarButton con Flyout en CommandBar en WinUI3

Características y funcionalidades introducidas en versiones preliminares anteriores de WinUI 3

Las siguientes características y funcionalidades se introdujeron en versiones preliminares anteriores de WinUI 3 y siguen siendo compatibles con WinUI 3 - Project Reunion 0.8 Preview.

Nota:

Algunas de las siguientes características seguirán siendo parte de las versiones preliminares de WinUI 3, pero es posible que no formen parte de la próxima versión compatible. Estas características se marcan como experimentales y producirán una advertencia cuando se usen en una aplicación. Las API que forman parte de la versión preliminar de WinUI para UWP 2.6 también se marcan como experimentales en esta versión.

  • Capacidad de crear aplicaciones de escritorio con WinUI, incluidas .NET para aplicaciones Win32
  • Compatibilidad de nivel de versión preliminar para desarrollar aplicaciones UWP
  • RadialGradientBrush
  • Actualizaciones de TabView
  • Actualizaciones de temas oscuros
  • Mejoras y actualizaciones en WebView2
    • Compatibilidad con valores altos de PPP
    • Compatibilidad con el cambio de tamaño y movimiento de ventanas
    • Actualizado para tener como destino la versión más reciente de Edge
    • Ya no es necesario hacer referencia a un paquete Nuget específico de WebView2
  • SwapChainPanel
  • Soporte para MRT Core
    • Esto hace que las aplicaciones sean más rápidas y ligeras al iniciarse y proporcionan una búsqueda de recursos más rápida.
  • Compatibilidad con Arm64
  • Arrastrar y colocar dentro y fuera de las aplicaciones
  • RenderTargetBitmap (actualmente solo contenido XAML: sin contenido SwapChainPanel)
  • Compatibilidad con cursores personalizados
  • Entrada fuera del subproceso
  • Mejoras en nuestra experiencia de desarrollador y herramientas:
    • Árbol visual en tiempo real, recarga en tiempo real, explorador de propiedades en tiempo real y herramientas similares
    • IntelliSense para WinUI 3
  • Mejoras necesarias para la migración de código abierto
  • Funcionalidades personalizadas de la barra de título: nuevas API Window.ExtendsContentIntoTitleBar y Window.SetTitleBar que permiten a los desarrolladores crear barras de título personalizadas en aplicaciones de escritorio.
  • Compatibilidad con VirtualSurfaceImageSource
  • Acrílico en la aplicación
  • Compatibilidad con varias ventanas en aplicaciones de escritorio
  • Validación de entrada

Proporcionar comentarios y sugerencias

Agradecemos sus comentarios en el repositorio de GitHub de WinUI.

Limitaciones y problemas conocidos

La versión preliminar de WinUI 3 - Project Reunion 0.8 es solo eso, una versión preliminar. Espere errores, limitaciones y otros problemas.

Los siguientes elementos son algunos de los problemas conocidos con WinUI 3 - Project Reunion 0.8. Si encuentra un problema que no aparece a continuación, háganoslo saber mediante la contribución a un problema existente o la presentación de un problema nuevo a través del repositorio de GitHub de WinUI.

Compatibilidad con la plataforma y el sistema operativo

WinUI 3- Project Reunion 0.8 Preview es compatible con equipos que ejecutan la actualización de octubre de 2018 de Windows 10 (versión 1809: compilación 17763) y versiones posteriores.

Herramientas para desarrolladores

  • Solo se admiten aplicaciones de C# y C++/WinRT.
  • Las aplicaciones de escritorio admiten .NET 6 (y versiones posteriores) y C# 9 y deben empaquetarse en una aplicación MSIX.
  • No hay compatibilidad con el Diseñador XAML.
  • Sin embargo, no se admiten nuevas aplicaciones de C++/CX; sin embargo, las aplicaciones existentes seguirán funcionando (vaya a C++/WinRT lo antes posible).
  • No se admite la implementación de escritorios no empaquetados.
  • Al ejecutar una aplicación de escritorio con F5, asegúrese de que ejecuta el proyecto de empaquetado. Al presionar F5 en el proyecto de aplicación, se ejecutará una aplicación sin empaquetar, que WinUI 3 aún no admite.

Faltan características de la plataforma

  • Compatibilidad con Xbox

  • Compatibilidad con HoloLens

  • Elementos emergentes con ventanas

    • Más concretamente, la propiedad ShouldConstrainToRootBounds siempre actúa como si estuviera establecida en true, independientemente del valor de la propiedad.
  • Soporte para la escritura manual, entre las que se incluyen:

  • Acrílico en segundo plano

  • MediaElement y MediaPlayerElement

  • MapControl

  • SwapChainPanel no admite transparencia

  • AcrylicBrush y otros efectos con CompositionBackdropBrush no se pueden muestrear desde SwapChainPanel o WebView2.

  • Global Reveal usa el comportamiento de reserva, que es un pincel sólido

  • Las islas XAML no se admiten en esta versión

  • El uso de WinUI 3 directamente en una aplicación de escritorio existente que no utiliza WinUI tiene la siguiente limitación: La única ruta actualmente disponible para migrar una aplicación existente es añadir un nuevo proyecto de WinUI 3 a tu solución, y ajustar o refactorizar tu lógica según sea necesario.

  • No se invoca a "Application.Suspending" en las aplicaciones de escritorio. Consulte la documentación de referencia del API en Application.Suspending Event para obtener más detalles.

  • El evento UISettings.ColorValuesChanged y el evento AccessibilitySettings.HighContrastChanged ya no se admiten en las aplicaciones de escritorio. Esto puede causar problemas si se usa para detectar cambios en los temas de Windows.

  • Anteriormente, para obtener una instancia de CompositionCapabilities, llamaría a CompositionCapabilites.GetForCurrentView(). Sin embargo, las funcionalidades devueltas por esta llamada no dependían de la vista. Para abordar y reflejar esto, hemos eliminado el objeto GetForCurrentView() estático en esta versión, por lo que ahora puede crear un objeto CompositionCapabilties directamente.

  • CoreWindow, ApplicationView, CoreApplicationView, CoreDispatcher y sus dependencias no se admiten en aplicaciones de escritorio (consulte a continuación)

CoreWindow, ApplicationView, CoreApplicationView y CoreDispatcher en aplicaciones de escritorio

Novedades de WinUI 3 Preview 4 y parte del estándar en el futuro: CoreWindow, ApplicationView, CoreApplicationView, CoreDispatcher y sus dependencias ya no están disponibles en las aplicaciones de escritorio. Por ejemplo, la propiedad Window.Dispatcher siempre es null, pero la propiedad Window.DispatcherQueue se puede usar como alternativa.

Estas API solo funcionan en aplicaciones para UWP. En versiones preliminares anteriores también han trabajado parcialmente en aplicaciones de escritorio, pero desde la versión preliminar 4 se han deshabilitado por completo. Estas API están diseñadas para el caso de UWP en el que solo hay una ventana por subproceso y una de las características de WinUI 3 es habilitar varias en el futuro.

Hay API que dependen internamente de la existencia de estas API, que por lo tanto no se admiten en una aplicación de escritorio. Estas API suelen tener un método estático GetForCurrentView . Por ejemplo , UIViewSettings.GetForCurrentView.

Para obtener más información sobre las API afectadas, así como soluciones alternativas y reemplazos para estas API, consulte Compatibilidad con las API de WinRT en aplicaciones de escritorio.

Problemas conocidos

  • Puede recibir un error de compilación debido a versiones no coincidedas del SDK de .NET y a la winrt.runtime.dll. Como solución alternativa, puede probar lo siguiente:

    Establezca explícitamente el SDK de .NET en la versión correcta. Para determinar la versión correcta de la aplicación, busque la etiqueta en el <TargetFramework> archivo del proyecto. Con el número de compilación de Windows SDK que la aplicación tiene como destino en la <TargetFramework> etiqueta (como 18362 o 19041), agregue el siguiente elemento al archivo de proyecto y guarde el proyecto:

    <ItemGroup>            
        <FrameworkReference Update="Microsoft.Windows.SDK.NET.Ref" RuntimeFrameworkVersion="10.0.{Target Windows SDK Build Number}.16" />
        <FrameworkReference Update="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.{Target Windows SDK Build Number}.16" />
    </ItemGroup>
    

    Tenga en cuenta que esta solución alternativa es necesaria para el SDK de .NET 5.0.203 y versiones anteriores, pero no será necesario para el SDK de .NET 5.0.204 o 5.0.300.

  • Al usar Visual Studio 2019, versión 16.10, Preview 2, Árbol visual dinámico puede provocar un bloqueo. Para evitar esto, actualice a la versión preliminar más reciente de Visual Studio 2019 16.10.

  • Los botones de título de la ventana pueden estar mal colocados cuando SetTitleBar no está establecido o es nulo.

Las winui3 ramas y winui3preview ya no están disponibles y el repositorio galería de controles XAML se ha cambiado a microsoft/WinUI-Gallery. La aplicación de ejemplo, actualizada para Project Reunion 0.8 Preview, se conserva en una versión histórica. Esta instantánea usa Project Reunion 0.8.0-preview y no refleja la galería actual de WinUI 3.

Para descargar la instantánea histórica, clone el repositorio y extraiga la confirmación conservada:

git clone https://github.com/microsoft/WinUI-Gallery.git
cd WinUI-Gallery
git fetch origin refs/pull/698/head
git checkout 77d9e0a68bb67edb2b79fd1535fb18cf438b4265

Consulte también