将 MvxRecyclerView 对象中的 ItemClicked 传递给新的 View

Pass ItemClicked in MvxRecyclerView object to new View

我是 Xamarin 的新手。

我有 MvxRecyclerView 来显示汽车列表。单击汽车让用户显示所选汽车的完整规格。我在新 activity 中显示所选汽车的完整规格时遇到问题(同时在视图模型之间传递对象)

我的 MvxRecyclerView .xml 看起来像:

    <mvvmcross.droid.support.v7.recyclerview.MvxRecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/background_light"
        local:MvxItemTemplate="@layout/listitem_car"
        local:MvxBind="ItemsSource Cars; ItemClick NavigateCommand"
        />

我的 CarsViewModel 与 CarItemViewModel 的“空”导航:

public class CarsViewModel : MvxViewModel
    {
        public CarsViewModel(IMvxNavigationService navigationService)
        {
            Cars = new MvxObservableCollection<Car>();
            _navigationService = navigationService;
            NavigateCommand = new MvxAsyncCommand(() => _navigationService.Navigate<CarItemViewModel>());
        }

        private MvxObservableCollection<Car> _cars;
        public MvxObservableCollection<Car> Cars
        {
            get => _cars;
            set
            {
                _cars = value;
                RaisePropertyChanged(() => Cars);
            }
        }

        public override async Task Initialize()
        {
            await base.Initialize();
            CarService carService = new CarService();
            await Task.Run(async () =>
             {
                 Cars = await carService.GetCars();
             });
        }

        private readonly IMvxNavigationService _navigationService;
        public IMvxAsyncCommand NavigateCommand { get; private set; }

您知道如何使用 MVVMCross 将所选 mvxrecyclerview 项目的数据移动到新视图吗?不幸的是,我不明白 MVVMCross 的文档对此有何评论(在我看来它看起来很糟糕)。

如有任何帮助,我将不胜感激。

编辑 1: 为了更透明,我更改了一些问题描述。

我觉得文档对传参说的很清楚,here:

当你导航时,你应该传递一个 MyObject of CarItemViewModel:

   await _navigationService.Navigate<CarItemViewModel, MyObject>(new MyObject());

然后就可以得到CarItemViewModel中的MyObject并使用了:

public class CarItemViewModel: MvxViewModel<MyObject>
{
    private MyObject _myObject;

    public override void Prepare()
    {
        // first callback. Initialize parameter-agnostic stuff here
    }

    public override void Prepare(MyObject parameter)
    {
        // receive and store the parameter here
        _myObject = parameter;
    }
    
    public override async Task Initialize()
    {
        await base.Initialize();

        // do the heavy work here
    }
}