我有一条使用以下注册的路线
Routing.RegisterRoute("SchoolHome", typeof(SchoolHomePage));
我有一个包含学校列表的页面,当我点击一所学校时,它可以从 ViewModel 命令中很好地执行
Shell.Current.GoToAsync($"SchoolHome?schoolid={selectedSchool.Id}");
这是我的 SchoolHomePage.xaml.cs
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class SchoolHomePage : ContentPage
{
public SchoolHomePage()
{
InitializeComponent();
BindingContext = new SchoolHomeViewModel();
}
}
这是 SchoolHomeViewModel.cs 的片段
[QueryProperty("School", "schoolid")]
public class SchoolHomeViewModel : BaseViewModel
{
string school;
public string School
{
get
{
return school;
}
set
{
SetProperty(ref school, Uri.UnescapeDataString(value));
}
}
因此,Shell 不会将我的 QueryProperty 映射到我的属性 School 并且页面不会导航。如果我将 QueryProperty 放在后面的 ContentPage 代码中并在那里设置 ViewModel 的 School 属性,它将传递值,但页面仍然无法导航。它只是停留在学校列表的页面上,而我刚刚点击的那所学校被选中了。