繁体   English   中英

在毛伊岛内容页面视图中无法识别视图模型

[英]View model not being recognized within Maui Content Page View

我试图了解毛伊岛的服务,但注入并没有在视图中重新调整它。

namespace FoodOrder.ViewModels
{
public class MenusViewModel
{
    IMenuServiceInterface _menuServiceInterface;
    IFoodOrderHttpClientInterface _foodOrderHttpClientInterface;
    public MenusViewModel(IMenuServiceInterface 
       menuServiceInterface, IFoodOrderHttpClientInterface 
       foodOrderHttpClientInterface)
    {
        _foodOrderHttpClientInterface = foodOrderHttpClientInterface;
    }   
}
}

看法

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
        x:Class="FoodOrder.Pages.MenuPage"
        xmlns:vm="clr-namespace:FoodOrder.ViewModels"
        Title="MenuPage">
<ContentPage.BindingContext>
<vm:MenusViewModel />
</ContentPage.BindingContext>
<StackLayout>
<Label Text="Welcome to .NET MAUI!"
        VerticalOptions="Center" 
        HorizontalOptions="Center" />
</StackLayout>
</ContentPage>

代码背后

public partial class MenuPage : ContentPage
{
public MenuPage(MenusViewModel viewModel)
{
    InitializeComponent();
    BindingContext = viewModel;
}
}

MauiProgram.cs

public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
    var builder = MauiApp.CreateBuilder();
    builder
        .UseMauiApp<App>()
        .ConfigureFonts(fonts =>
        {
            fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
        });
    builder.Services.AddTransient<IFoodOrderHttpClientInterface, 
     FoodOrderHttpClientServices>();

    return builder.Build();
}
}

要让 Maui 应用依赖注入,您需要声明应该发生注入的视图模型。

将此行添加到构建器:

builder.Services.AddTransient<MenusViewModel>();

顺便说一句,如果有许多视图和视图模型要添加到 DI 服务中,可以像这样更简洁:

var diTypes = new List<Type> { typeof(MainPage), typeof(Page2), typeof(Page3), typeof(Page4) };
diTypes.ForEach(ty => builder.Services.AddTransient(ty));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM