xamarin net maui:无法动态创建类型“”的示例,原因:未定义无参数构造函数

pxiryf3j  于 2023-05-21  发布在  其他
关注(0)|答案(1)|浏览(146)

当我单击按钮转到该页时,出现异常“System.MissingMethodException:“无法动态创建类型为'MuseumFinder.Views.博物馆列表页管理员'的示例”。原因:未定义不带参数的构造函数。”
但是我不知道如何修复它,以便视图显示视图模型的结果,同时执行到页面的转换。

private async void OnCounterClicked_1(object sender, EventArgs e)
    {
        await AppShell.Current.GoToAsync(nameof(MuseumListPageForAdmins));
    }
using MuseumFinder.ViewModels;

namespace MuseumFinder.Views;

public partial class MuseumListPageForAdmins : ContentPage
{
   

    private MuseumListPageViewModel _viewModel;
    public MuseumListPageForAdmins(MuseumListPageViewModel viewModel)
    {
        _viewModel = viewModel;
        this.BindingContext = viewModel;

    }
    protected override void OnAppearing()
    {
        base.OnAppearing();
        _viewModel.GetMuseumListCommand.Execute(null);

    }
mec1mxoz

mec1mxoz1#

你现在使用它的方式看起来像一些依赖注入风格,我以前没有使用过。
Appshell需要一个无参数的构造函数来创建一个新视图。由于路由不传递任何参数,因此不需要在构造函数中指定ViewModel
请尝试以下代码

using MuseumFinder.ViewModels;

namespace MuseumFinder.Views;

public partial class MuseumListPageForAdmins : ContentPage
{
   

    private MuseumListPageViewModel _viewModel = new();
    public MuseumListPageForAdmins()
    {
        InitializeComponent();
        BindingContext = _viewModel;
    }
    protected override void OnAppearing()
    {
        base.OnAppearing();
        _viewModel.GetMuseumListCommand.Execute(null);

    }

我做了修改,视图在创建时创建了一个视图模型的新示例,并将BindingContexts设置给它。
编辑:记住InitializeComponent()函数来呈现视图的控件。我自己在回答时差点忘了;)

相关问题