Xamarin Forms - не может обновить Picker - PullRequest
0 голосов
/ 23 октября 2019

Следующее приложение Xamarin Forms, содержащее элементы управления Picker и CollectionView, привязанные к одним и тем же List животным (Chicken и Cow). Когда я нажимаю кнопку обновления, животные должны перейти на Eagle и Elephant. Животные улучшены, но сборщик не отражает изменения. CollectionView отлично работает.

Что я тут не так делаю? При необходимости, источник для этого проекта можно найти на Github .

Нажмите, чтобы увидеть демо

Imgur

MainPage.xaml

    <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 xmlns:d="http://xamarin.com/schemas/2014/forms/design"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                 mc:Ignorable="d"
                 x:Class="SampleApp.MainPage">

        <StackLayout Margin="0,100,0,0">
            <Button Text="Upgrade Animals" 
                    Margin="10"
                    HorizontalOptions="Center"
                    VerticalOptions="Start"
                    Command="{Binding Upgrade}" />
            <Picker ItemsSource="{Binding Animals}" />
            <CollectionView ItemsSource="{Binding Animals}" />
        </StackLayout>

    </ContentPage>

MainPageModel.cs

    public class MainPageModel : INotifyPropertyChanged
    {
        public MainPageModel()
        {
            _Animals = new List<string>() { "Chicken", "Cow" };
        }

        private List<string> _Animals;
        public List<string> Animals
        {
            get { return _Animals; }
            set
            {
                _Animals = value;

                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Animals"));
            }
        }

        public Command Upgrade
        {
            get
            {
                return new Command(_ =>
                {
                    Animals = new List<string>() { "Eagle", "Elephant" };
                });
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
    }

ОБНОВЛЕНИЕ

Приведенный выше код работает под управлением XF 4.3.0.908675. Я понизил до 4.2.0.778463, и проблема уходит. Это может быть новая ошибка, появившаяся в последней версии XF.

1 Ответ

0 голосов
/ 24 октября 2019

В последнее время я сталкиваюсь с подобной проблемой, и, похоже, это проблема XF.

Я исправил проблему в своем приложении, не устанавливая в списке "новый список ()"а лучше создать отдельный список и затем присоединить его к связанному списку.

В вашей Команде вам следует попробовать это: List newList = new List () {" Eagle "," Elephant "};Animals = newList;

Это может не сработать для вашего примера, но это сработало для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...