void Sized(ListView listView) { SizeCategory sizeCategory = (SizeCategory)listView.SelectedItem; // ListView должен обновляться после изменения источника данных, но этого не происходит. Поэтому выход такой List <SizeCategory> tempList = new List <SizeCategory> (); foreach (SizeCategory item in SizeCategoryList) { if (sizeCategory != null) { tempList.Add(new SizeCategory { Id = item.Id, Name = item.Name, IsCheck = (item.Id == sizeCategory.Id) ? !sizeCategory.IsCheck : item.IsCheck }); } else { tempList.Add(new SizeCategory { Id = item.Id, Name = item.Name, IsCheck = false }); } } filterParam.Sizes = tempList.Where(g => g.IsCheck).Select(g => g.Id).ToArray <int> (); listView.ItemsSource = tempList; SizeCategoryList = tempList; }
protected override void OnBindingContextChanged() { base.OnBindingContextChanged(); SizeCategory entityBind = BindingContext as SizeCategory; if (entityBind != null) { imgCheck.IsVisible = entityBind.IsCheck; imgUnCheck.IsVisible = !entityBind.IsCheck; } }
async void SetSizes(int categoryID) { try { SizeCategoryList = await SizeCategory.GetSizeCategoryAsync(categoryID); listSizes.ItemsSource = SizeCategoryList; if (listSizes.HeightRequest == -1) { listSizes.HeightRequest = (listSizes.RowHeight + 1) * SizeCategoryList.Count; } } catch (Exception) { eventRefresh = null; eventRefresh += (sender, e) => { Button content = sender as Button; content.IsEnabled = false; SetSizes(categoryID); }; Content = OnePage.mainPage.ShowMessageError(eventRefresh); return; } Content = mainLayout; }