Algunas API de Windows se han quitado

Se han eliminado las siguientes API:

  • EventoMicrosoft.Maui.ApplicationModel.IWindowStateManager.ActiveWindowDisplayChanged
  • Método Microsoft.Maui.ApplicationModel.IWindowStateManager.OnWindowMessage(System.IntPtr,uint,System.IntPtr,System.IntPtr)
  • Método Microsoft.Maui.ApplicationModel.Platform.OnWindowMessage(System.IntPtr,uint,System.IntPtr,System.IntPtr)

Versión introducida

.NET 7

Comportamiento anterior

Anteriormente, el método IWindowStateManager.OnWindowMessage() era un detalle de implementación que ejecutaba una comprobación en los parámetros para determinar si se debe generar el evento ActiveWindowDisplayChanged. El evento ActiveWindowDisplayChanged se podía invocar si el tipo concreto podía observar los cambios de la pantalla que contenía la ventana actualmente activa.

Podía llamar al método Platform.OnWindowMessage() para pasar mensajes. Este método llamaba a IWindowStateManager.OnWindowMessage() y, luego, eso hacía opcionalmente que se desencadenara el evento ActiveWindowDisplayChanged.

Comportamiento nuevo

Ahora se han quitado las API.

Tipo de cambio importante

Este cambio puede afectar a la compatibilidad binaria y a la compatibilidad de orígenes.

Motivo del cambio

El evento ActiveWindowDisplayChanged nunca debería haber sido público porque era un detalle de implementación y no proporcionaba información adicional de que "algo había cambiado". Se ha quitado para evitar confusiones con el evento MainDisplayInfoChanged y para reducir la posible complejidad de implementación para los usuarios y el propio SDK.

El método IWindowStateManager.OnWindowMessage() también era un detalle de implementación y nunca debería haber sido público. Esta API ya no hace nada y, por tanto, se ha quitado.

El método Platform.OnWindowMessage() se implementó para solucionar una limitación de Xamarin.Forms y Xamarin.Essentials. Se introdujo en .NET MAUI para facilitar la migración y se utilizó en .NET 6. Sin embargo, en .NET 7, esta API ya no hace nada y se ha quitado.

  • Si no va a compilar la aplicación para Windows, no es necesaria ninguna acción.
  • Si va a usar ActiveWindowDisplayChanged, use mejor Microsoft.Maui.Devices.DeviceDisplay.Current.MainDisplayInfoChanged.
  • Si va a llamar a alguno de los métodos OnWindowMessage(), quite la llamada.

API afectadas

  • Microsoft.Maui.ApplicationModel.IWindowStateManager.ActiveWindowDisplayChanged
  • Microsoft.Maui.ApplicationModel.IWindowStateManager.OnWindowMessage(System.IntPtr,uint,System.IntPtr,System.IntPtr)
  • Microsoft.Maui.ApplicationModel.Platform.OnWindowMessage(System.IntPtr,uint,System.IntPtr,System.IntPtr)