Привет, Я пытаюсь обновить listView
, добавив и удалив элемент из него. Добавление элемента в listview
отлично работает в iOS и Android. Но удаление любого предмета из него дает неправильный выход на Android, он отлично работает на iOS. В Android: всякий раз, когда я удаляю элемент из списка, он удаляется из коллекции, но в пользовательском интерфейсе он удаляет последний элемент, присутствующий в пользовательском интерфейсе после удаления, когда я добавляю его снова, добавляет ранее удаленный элемент в список, а не новый новый новый элемент. Пожалуйста, проверьте код, который я использовалXamarin forms xaml Listview не обновляется в соответствии с изменениями коллекции
<ListView RowHeight="100" HorizontalOptions="End" ItemsSource="{Binding GuidePrices, Mode=OneWay}" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout Orientation="Horizontal">
<controls:BindablePicker ItemsSource="{Binding Prices}" WidthRequest="150" SelectedItem="{Binding SelectedProduct, Mode=TwoWay}" />
<Button Text="Add" IsVisible="{Binding Action}">
<b:Interaction.Behaviors>
<b:BehaviorCollection>
<b:EventToCommand CommandNameContext="{b:RelativeContext CampsiteViewPage}"
EventName="Clicked"
CommandName="AddPriceListCommand"
CommandParameter="{Binding}" />
</b:BehaviorCollection>
</b:Interaction.Behaviors>
</Button>
<Button Text="Delete" IsVisible="{Binding Action, Converter={StaticResource cnvInvert}}">
<b:Interaction.Behaviors>
<b:BehaviorCollection>
<b:EventToCommand CommandNameContext="{b:RelativeContext CampsiteViewPage}"
EventName="Clicked"
CommandName="DeletePriceListCommand"
CommandParameter="{Binding}" />
</b:BehaviorCollection>
</b:Interaction.Behaviors>
</Button>
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
--ViewModel код на добавление и удаление команду
this.AddPriceListCommand = new Command((s) =>
{
if (_guidePrices != null)
{
_guidePrices.Add(new PricesListModel() { ListId = Guid.NewGuid(), Action = false, Prices = _campsite.Guides[0].Prices });
}
});
this.DeletePriceListCommand = new Command((sender) => {
var _priseList = (from priceList in _guidePrices
where priceList == (PricesListModel)sender
select priceList).ToList();
_guidePrices.RemoveAt(_guidePrices.IndexOf((PricesListModel)sender));
});
Я не могу найти причину, по которой это поведение на андроид, как тот же код работает в ИОС, как и ожидалось.
Какая версия Xamarin.Forms вы используете? –
вот моя конфигурация В.С. Xamarin Xamarin 3.9.519.0 (5667ef4) Xamarin.Android 4.20.0.37 Xamarin.iOS 8.8.1.0 Xamarin.iOS Унифицированные миграции 1,0 – Rajendra