В моем приложении Xamarin Forms у меня есть ListView с различными ячейками, используя DataTemplates и DataTemplateSelectors. Для одного типа ячеек на нем есть кнопка, которая при нажатии на нее переходит на другую страницу, содержащую только ListView, состоящую из только строк.Заполнение ListView с помощью NavigationParameters?
Проблема возникает из-за того, что метод OnNavigatedTo вызывается после загрузки страницы и, следовательно, список, который я передаю на эту новую страницу «Только ListView», обновляет значение, которое я связываю с ListView, после создания ListView и заполняется, но заполняется ничем, потому что данные поступают с предыдущей страницы с помощью метода OnNavigatedTo.
public class ListPageViewModel : _ViewModelBase
{
private INavigationService _navigationService;
public ListPageViewModel(INavigationService navigationService)
{
_navigationService = navigationService;
_strings = new List<string>()
{
"Jaguar", "Elephant", "Nemo", "Cat", "Dog", "Iguana", "Puma", "Crow", "Hawk", "Owl", "Badger", "Meerket",
"Shark", "Whale", "Monkey", "Snake", "Lion", "Zebra", "Hippo", "Squirrel", "Rhino", "Bear", "Moose",
"Camel", "Chicken", "Cow", "Sheep", "Turkey", "Jellyfish", "Salmon", "Parrot", "Wolf", "Gecko"
// Placeholder before we have lists of customers
};
}
private IEnumerable<string> _strings;
public IEnumerable<string> Strings { get { return _strings; } set { SetProperty(ref _strings, value); } }
public override void OnNavigatedTo(NavigationParameters parameters)
{
base.OnNavigatedTo(parameters);
if (parameters.ContainsKey("dataList"))
{
_strings = (List<string>)parameters["dataList"];
}
}
}
Так что, когда я перейти на эту страницу, _strings
список первым заполняется список животных, а затем загружается страница с указанием всех животных в ListView, а затем после того, как ListView загружен он изменяет значение списка _strings
должно совпадать с списком, переданным вместе с навигационными параметрами. Итак, как мне сделать обновление ListView каждый раз, когда список _strings
изменен или обновлен?