当我单击按钮转到该页时,出现异常“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);
}
1条答案
按热度按时间mec1mxoz1#
你现在使用它的方式看起来像一些依赖注入风格,我以前没有使用过。
Appshell需要一个无参数的构造函数来创建一个新视图。由于路由不传递任何参数,因此不需要在构造函数中指定ViewModel
请尝试以下代码
我做了修改,视图在创建时创建了一个视图模型的新示例,并将BindingContexts设置给它。
编辑:记住InitializeComponent()函数来呈现视图的控件。我自己在回答时差点忘了;)