2016-09-07 2 views
0

私のXamarin Formsアプリケーションでは、DataTemplatesとDataTemplateSelectorsを使用して、異なるセルを持つListViewを持っています。 1つのタイプのセルには、ボタンがあり、タップすると、文字列のみで構成されるListViewだけを含む別のページに移動します。ListViewにNavigationParametersを設定していますか?

私の問題は、ページがロードされた後に呼び出されるOnNavigatedToメソッドが原因で発生します。したがって、この新しい 'ListView only'ページに渡しているリストは、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コントロールが読み込まれた後、それが変わります_stringsリストの値は、NavigationParametersとともに渡されるリストと同じにする必要があります。だから、_stringsリストが変更または更新されるたびにListViewを更新するにはどうすればよいですか?

答えて

1

いずれ

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

又はObservableCollection

を使用
関連する問題