Следующее приложение 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.