2016-09-07 7 views
0

В моем приложении 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 изменен или обновлен?

ответ

1

Либо

Strings = (List<string>)parameters["dataList"]; 

или использовать ObservableCollection

Смежные вопросы