2016-09-07 157 views
0

在我的Xamarin Forms應用程序中,我有一個帶有不同單元格的ListView,使用DataTemplates和DataTemplateSelectors。對於一種類型的單元格,它有一個按鈕,當它被點擊時,導航到另一個只包含僅由字符串組成的ListView的頁面。使用NavigationParameters填充ListView?

我的問題出現在頁面加載後調用的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列表的值與隨NavigationParameters一起傳遞的列表相同。那麼如何在每次更改或更新_strings列表時更新ListView?

回答

1

要麼

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

,或者使用ObservableCollection