删除了某些 Windows API

以下 API 已被删除:

  • 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) 方法

引入的版本

.NET 7

旧行为

以前,IWindowStateManager.OnWindowMessage() 方法是一个实现细节,它会对参数运行检查以确定是否应引发 ActiveWindowDisplayChanged 事件。 如果具体类型能够观察包含当前活动窗口的显示更改,则可以调用 ActiveWindowDisplayChanged 事件。

可以调用 Platform.OnWindowMessage() 方法来传递消息。 此方法调用了 IWindowStateManager.OnWindowMessage(),然后会选择性地导致 ActiveWindowDisplayChanged 事件触发。

新行为

这些 API 现已删除。

中断性变更的类型

此项更改可能会影响二进制兼容性源兼容性

更改原因

ActiveWindowDisplayChanged 事件绝不应公开,因为它是一个实现细节,不提供关于“发生了某些更改”的额外信息。 我们删除了它,以避免与 MainDisplayInfoChanged 事件混淆,并降低用户和 SDK 本身的潜在实现复杂性。

IWindowStateManager.OnWindowMessage() 方法也是一个实现细节,永远不应该公开。 此 API 不再执行任何操作,因此已被删除。

Platform.OnWindowMessage() 方法的实现旨在绕过 Xamarin.Forms 和 Xamarin.Essentials 的限制。 它被引入 .NET MAUI 是为了帮助迁移,它在 .NET 6 中使用。 但是,在 .NET 7 中,此 API 不再执行任何操作,它已被删除。

  • 如果你不构建 Windows 应用,则无需执行任何操作。
  • 如果使用的是 ActiveWindowDisplayChanged,请改用 Microsoft.Maui.Devices.DeviceDisplay.Current.MainDisplayInfoChanged
  • 如果你之前调用 OnWindowMessage() 方法中的某一个,请删除该调用。

受影响的 API

  • 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)