Как вы передаете данные вашей модели в подробный вид?Согласно вашим описаниям, первая ViewModel должна содержать все данные.Когда пользователь щелкает одну ячейку, срабатывает событие SelectionChangedCommand
источника tableView.Обычно мы связываем эту команду с соответствующей командой ViewModel, затем мы можем сконфигурировать push и передать туда параметры.
Вот мое связывание в первом представлении, которое содержит UITableView
:
var set = this.CreateBindingSet<FirstView, FirstViewModel>();
set.Bind(source).For(s => s.ItemsSource).To(vm => vm.ItemsGroup);
set.Bind(source).For(s => s.SelectionChangedCommand).To(vm => vm.ShowDetailsCommand);
set.Apply();
Когда пользователь щелкает одну ячейку в TableView, ShowDetailsCommand
срабатывает в FirstViewModel
:
private readonly Lazy<IMvxNavigationService> _navigationService = new Lazy<IMvxNavigationService>(Mvx.Resolve<IMvxNavigationService>);
private MvxCommand<Item> showDetailsCommand;
public ICommand ShowDetailsCommand
{
get
{
return showDetailsCommand ?? (showDetailsCommand = new MvxCommand<Item>(showDetails));
}
}
async void showDetails(Item item)
{
// This item is bound to the ItemsSource through ItemsGroup
await _navigationService.Value.Navigate<SecondViewModel, Item>(item);
}
Тогда вторая ViewModel может принять этот элемент через:
public class SecondViewModel : MvxViewModel<Item>
{
private List<CoinHistoryModel> _CoinHistory;
public List<CoinHistoryModel> CoinHistory
{
get
{
return _CoinHistory;
}
set
{
_CoinHistory = value;
RaisePropertyChanged(() => CoinHistory);
}
}
public override void Prepare(Item parameter)
{
CoinHistory = parameter.SingleCoinHistory;
}
}
Наконец, в подробном представлении будет отображаться CoinHistory
, если вы успешно связали его со второй моделью представления.
Здесь - это моя демонстрация, на которую вы ссылаетесь.