私の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を更新するにはどうすればよいですか?