Xamarin Shell导航将数据传递到ViewModel不起作用

时间:2019-08-27 16:37:22

标签: xamarin xamarin.forms xamarin.shell

我有一条使用以下地址注册的路由

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属性,它将传递值,但页面仍无法导航。它只是停留在列出学校列表的页面上,而我刚刚选择的学校就被选中了。

1 个答案:

答案 0 :(得分:0)

我发现了问题。我的视图模型中的一个属性有问题。一旦我修复了它的作用。