原文:
https://devblogs.microsoft.com/xamarin/introducing-net-maui-compatibility-for-the-xamarin-community-toolkit/?WT.mc_id=WDIT-MVP-5004326
Xamarin.CommunityToolkit.MauiCompat
Xamarin.CommunityToolkit.Markup.MauiCompat
这些 MauiCompat 库与最新版本的 Xamarin.CommunityToolkit 保持一致;主要区别在于这些适用于您的 .NET MAUI 应用程序,而 Xamarin.CommunityToolkit 适用于您的 Xamrain.Forms 应用程序。
今天的 MauiCompat 版本包括对 iOS 和 Android 的支持。未来的 MauiCompat 版本将包括对 iOS、Android、macOS 和 UWP 的支持。
Xamarin.Community.Toolkit | Xamarin.CommunityToolkit.MauiCompat | Xamarin.Community.Toolkit.Markup | Xamarin.CommunityToolkit.Markup.MauiCompat | |
---|---|---|---|---|
Dependency | Xamarin.Forms | .NET MAUI | Xamarin.Forms | .NET MAUI |
Native Implementation | Custom Renderer | Custom Renderer | Custom Renderer | Custom Renderer |
Target | .NET Standard 1.0 (Same as Xamarin.Forms) | .NET 6.0 (Same as .NET MAUI) | .NET Standard 1.0 (Same as Xamarin.Forms) | .NET 6.0 (Same as .NET MAUI) |
Platforms | iOS, Android, GTK#, Tizen, UWP, WPF (Same as Xamarin.Forms) | iOS, Android, Windows (in progress), macOS (in progress) (Same as .NET MAUI) | iOS, Android, GTK#, Tizen, UWP, WPF (Same as Xamarin.Forms) | iOS, Android, Windows (in progress), macOS (in progress) (Same as .NET MAUI) |
哪些应用程序应该使用 MauiCompat?
✅ 现有的 Xamarin.Forms 应用迁移到 .NET MAUI MauiCompat 库是作为从 Xamarin.Forms 迁移到 .NET MAUI 的一个有用步骤而创建的。这些库确保你可以在 .NET MAUI 应用程序中访问 Xamarin.CommunityToolkit 的所有功能,而不会破坏更改,从而帮助你更轻松地迁移到 .NET MAUI。
我们建议最终将 Xamarin.CommunityToolkit.MauiCompat 替换为新的 .NET MAUI 工具包 CommunityToolkit.Maui,以利用新功能和优化(请参见下面的图表)。
❌ 全新的 .NET MAUI 应用程序 对于新的(又名绿地).NET MAUI 应用程序,请使用新的 .NET MAUI 社区工具包,该工具包针对 .NET MAUI 进行了全面优化,而不是 Xamarin.CommunityToolkit.MauiCompat。
Xamarin.CommunityToolkit.MauiCompat
vs CommunityToolkit.Maui
Xamarin.CommunityToolkit.MauiCompat | CommunityToolkit.Maui | |
---|---|---|
Future Updates | Only Bug Fixes | New Features Bug Fixes |
Native Implementation | Custom Renderer | Handlers |
Uses Microsoft.Maui.Controls.Compatibility? | Yes | No |
Road Map | Will be deprecated alongside Xamarin.Forms November 2022 | Periodic Updates Maintenance Releases Alongside .NET MAUI (I.e. No planned deprecation schedule) |
MauiCompat 入门
这两个 MauiCompat 库都可以作为 NuGet 包使用,可以添加到任何面向 net6.0-ios 和 net6.0-android 的 .NET 6 项目中:
Xamarin.CommunityToolkit.MauiCompat | Xamarin.CommunityToolkit.Markup.MauiCompat | |
---|---|---|
NuGet Package | https://www.nuget.org/packages/Xamarin.CommunityToolkit.MauiCompat/ | https://www.nuget.org/packages/Xamarin.CommunityToolkit.Markup.MauiCompat/ |
1.在 Visual Studio 中打开现有项目
2.在 Visual Studio 包管理器控制台中,输入以下命令:
- Install-Package Xamarin.CommunityToolkit.MauiCompat
安装包 Xamarin.CommunityToolkit.MauiCompat 或者
- Install-Package Xamarin.CommunityToolkit.Markup.MauiCompat
安装包 Xamarin.CommunityToolkit.Markup.MauiCompat 要将命名空间添加到工具包:
- using Xamarin.CommunityToolkit.Markup;
在您的 C# 页面中,添加在您的 XAML 页面中,添加命名空间属性:
- xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
使用 Xamarin.CommunityToolkit;或者使用 Xamarin.CommunityToolkit.Markup;
4.在 Startup.cs 文件中注册要使用的渲染器。您可以只注册实际需要的渲染器,也可以注册 Xamarin 社区工具包内的所有渲染器。看看下面的代码片段如何做到这两点。
代码语言:javascript复制public void Configure(IAppHostBuilder appBuilder)
{
appBuilder
.UseMauiApp<App>()
.ConfigureMauiHandlers(handlers =>
{
// Register ALL handlers in the Xamarin Community Toolkit assembly
handlers.AddCompatibilityRenderers(typeof(Xamarin.CommunityToolkit.UI.Views.MediaElementRenderer).Assembly)
// Register just one handler for the control you need
handlers.AddCompatibilityRenderer(typeof(Xamarin.CommunityToolkit.UI.Views.MediaElement), typeof(Xamarin.CommunityToolkit.UI.Views.MediaElementRenderer));
});
}
查看文档的其余部分以了解有关实现特定功能的更多信息:https://docs.microsoft.com/xamarin/community-toolkit/
很高兴知道
我们已经在 alpha 标签下发布了这个包。因为这个 MauiCompat 包是与 .NET MAUI 的预览版一起构建的,所以仍然有一些东西需要在双方蚀刻。我们现在发布此版本,以便我们可以尽早获得您的反馈,并确保 MauiCompat Toolkit 在 .NET MAUI 发布时已准备好使用。
非渲染器控件
有些控件不需要(单独的)渲染器,即 Shield。目前不支持这些控件。我们有一个
标记应该有效
该包应该可以正常工作,因为它不依赖于渲染器。我们确实使它与所有当前的 .NET MAUI 更改和命名空间兼容,因此您可以像以前一样继续享受标记扩展。
其他已知问题和报告问题
在 .NET MAUI 中,对象发生了变化。因此,该领域可能存在一些问题,尽管您在外面可能并不明显。每当您遇到 a 时,您可能想尝试将控件的所有颜色属性设置为显式值,看看是否能解决问题。如果没有,请告诉我们您所看到的内容,以便我们查看。ColorNullReferenceException
如果您发现任何问题,请在常规 Xamarin.CommunityToolkit 存储库中报告它们,但请确保您提到这与包有关,以便我们知道在哪里查找问题。MauiCompat
发布时间表
展望未来,我们将与 Xamarin.CommunityToolkit 和 Xamarin.CommunityToolkit.Markup.MauiCompat 的每个新版本一起发布 NuGet 包
例如,Xamarin.CommunityToolkit 的最新版本是 v1.3.0-pre2,因此今天的 Xamarin.CommunityToolkit.MauiCompat 版本也是 v1.3.0-alpha2。现在唯一的细微差别是 and 标记。这在未来的版本中应该更符合。prealpha
为了使发布包与 保持一致,我们按照以下步骤操作:MauiCompatXamarin.CommunityToolkit
从最新的 Xamarin.CommunityToolkit 版本(又名 Git 标签)分支 这确保库中的逻辑与 releaseMauiCompatXamarin.CommunityToolkit 中的逻辑完全匹配 将 Xamarin.Forms 依赖项替换为 .NET MAUI 依赖项
代码语言:javascript复制<PackageReferenceInclude="Xamarin.Forms" />
<UseMaui>true</UseMaui>
更新到 .NET 6
代码语言:javascript复制<TargetFramework>netstandard2.1</TargetFramework>
<TargetFrameworks>net6.0-ios;net6.0-android</TargetFramework>
更新命名空间
使用 Xamarin.Forms -> 使用 Microsoft.Maui (在我们单独更新为 Xamarin.Forms.Mirosoft.Maui. 的特定文件中也有一些引用)
我们记录了转换为 的步骤,您可以在此处找到它们:
- https://github.com/xamarin/XamarinCommunityToolkit/blob/main/MauiCompatSteps.mdXamarin.CommunityToolkitXamarin.CommunityToolkit.MauiCompat
概括
将现有 Xamarin.Forms 应用程序迁移到 .NET MAUI 时,请利用这些库。它们包含与其对应物相同的逻辑,针对 .NET MAUI 而不是 Xamarin.Forms.MauiCompatXamarin.CommunityToolkit。
最终,您将希望迁移到 .NET MAUI 工具包以利用新功能和优化,因为我们将在 2022 年 11 月与 Xamarin.Forms 一起停用这些库MauiCompat。