使用 NavigationParameters 填充 ListView?

Populating ListView with NavigationParameters?

在我的 Xamarin Forms 应用程序中,我有一个包含不同单元格的 ListView,使用 DataTemplates 和 DataTemplateSelectors。对于一种类型的单元格,它上面有一个按钮,点击该按钮会导航到另一个页面,该页面仅包含一个仅由字符串组成的 ListView。

我的问题是在页面加载后调用了 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 中的所有动物,然后在 ListView 加载它之后将 _strings 列表的值更改为与随 NavigationParameters 一起传递的列表相同。那么如何在每次 _strings 列表更改或更新时更新 ListView?

两者都

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

或使用 ObservableCollection