使用 Xamarin Forms 项目将 UWP 迁移到使用 WinUI 3 文件结构和逻辑放置的 MAUI

问题描述 投票:0回答:1

我正在将包含 Xamarin Forms 的 UWP 项目迁移到包含 WinUI 3 的 .NET MAUI 项目。我试图了解应该将现有逻辑放置在新项目结构中的何处。

现有项目结构:

Xamarin 表单项目:

  • 应用程序.xaml
  • 应用程序.xaml.cs
  • 查看模型

UWP 项目:

  • 应用程序.xaml
  • App.xaml.cs(注册所有依赖项)
  • 主页.xaml
  • MainPage.xaml.cs
  • 依赖服务(在单独的文件夹中)

MAUI 项目结构:新的 MAUI 多项目应用程序(仅选择适用于 Windows 的 WinUI 3):

毛伊岛项目:

  • 应用程序.xaml
  • 应用程序.xaml.cs
  • AppShell.xaml
  • AppShell.xaml.cs
  • 主页.xaml
  • MainPage.xaml.cs
  • MauiProgramExtension.cs

MAUI WinUI3 项目:

  • 应用程序.xaml
  • 应用程序.xaml.cs
  • MauiProgram.cs

我不确定将逻辑从 Xamarin Forms with UWP 项目移动到 MAUI with WinUI 3 项目。具体来说,我很难理解:

我应该将依赖项注册从 App.xaml.cs 移到哪里? AppShell 相当于什么?导航逻辑应该放在哪里?

我应该如何在新项目中构造MainPage.xaml和MainPage.xaml.cs?

MauiProgram.cs 和 MauiProgramExtension.cs 中应包含哪些内容?

我没有找到太多解决此特定迁移场景的文档或教程。任何指导或示例将不胜感激。

xamarin.forms uwp maui winui-3
1个回答
0
投票

我应该将依赖项注册从 App.xaml.cs 移到哪里? MauiProgram.cs 和 MauiProgramExtension.cs 中应包含哪些内容?

您可以将依赖项注册放入 MauiProgramExtension.cs 中,如下所示:

....
        builder
            .UseMauiApp<App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
            });

        builder.Services.AddTransient<ILoggingService, LoggingService>();
        builder.Services.AddTransient<ISettingsService, SettingsService>();
        builder.Services.AddSingleton<MainPageViewModel>();
        builder.Services.AddSingleton<MainPage>();
.....

MAUI 为使用依赖注入提供内置支持。更多信息可以参考官方文档:依赖注入。另外,你还可以看到这个案例:“.NET MAUI多项目App”和“.NET MAUI App”的区别。对于

.NET MAUI App
项目,根目录下只有一个
MauiProgram.cs
。但对于
.NET MAUI Multi-project App
项目,它被分为两部分:MauiProgram.cs 和 MauiProgramExtension.cs。

AppShell 相当于什么,导航逻辑应该放在哪里?

您可以选择不使用它、删除它。这是默认生成的模板。您还可以使用其他样式

我应该如何在新项目中构造MainPage.xaml和MainPage.xaml.cs?

请参阅:删除文件。您可以在 MAUI Project 中设置布局和控制:

  • 应用程序.xaml
  • 应用程序.xaml.cs
  • AppShell.xaml
  • AppShell.xaml.cs
  • 主页.xaml
  • MainPage.xaml.cs
  • MauiProgramExtension.cs
© www.soinside.com 2019 - 2024. All rights reserved.