Мне нужно передать данные из ViewModel 1 во ViewModel 2 с помощью Prism.
TodoItem
- это моя модель со строкой:
public TodoItem _todotItem { get; set; }
private readonly INavigationService _navigationService;
Я назначил ее в конструкторе:
public MainPageViewModel(INavigationService navigationService, TodoItem todotItem)
{
_navigationService = navigationService;
_todotItem = todotItem;
}
И этот код я использую для перехода на следующую страницу (включая параметр):
NavigationParameters navParams = new NavigationParameters();
navParams.Add("PassedValue", _todoItem.name);
_navigationService.NavigateAsync("SecondPage", navParams);
Когда я устанавливаю точку останова на _todoItem.name
, она говорит нуль .Данные извлекаются до того, как я нажму listview
.Чего мне не хватает?
Редактировать:
Вот как я перемещаюсь (нажмите listview
):
private EventItem _selectedEvent { get; set; }
public EventItem SelectedEvent
{
get { return _selectedEvent; }
set
{
if (_selectedEvent != value)
{
if (Device.RuntimePlatform == Device.iOS)
{
_selectedEvent = null;
}
else
{
_selectedEvent = value;
}
NavigationParameters navParams = new NavigationParameters();
navParams.Add("PassedValue", _todoItem.name);
_navigationService.NavigateAsync("SecondPage", navParams);
}
}
}
Я использую правильные способы перехвата параметра на втором ViewModel
(однако я получаю null в первом ViewModel
):
public void OnNavigatingTo(INavigationParameters parameters)
{
if (parameters.ContainsKey("PassedValue"))
{
_todo = (string)parameters["PassedValue"];
OnPropertyChanged("Todo");
}
}
Я использую HTTPClient
чтобы получить данные.