将 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
}
}
我是 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
}
}