public void Reload(IEnumerable affectedRows) { var rows = affectedRows ?? BindableSeats.ToList(); foreach (SeatBox t in rows) { if (t.IsNot <SeatBox>()) { break; } var index = _bindableSeats.IndexOf(t); if (index == -1) { continue; } _bindableSeats[index] = t; } var reselectSeat = RetainCurrentSelectedSeat(); this.QuietlyReload(ref _bindableSeats, "BindableSeats"); reselectSeat.Invoke(); }
private Action RetainCurrentSelectedSeat() { var selectedIndex = BindableSeats.IndexOf(SelectedSeat); return(() => { SelectedSeat = selectedIndex == -1 ? null : _bindableSeats[selectedIndex] as SeatBox; }); }