private void AddSelection(SelectableViewModel selectable) { selectionOrder.Add(selectable); if (selectionOrder.Count > maximumSelectedCount) { selectionOrder[0].IsSelected = false; } }
private void OnIsSelectedChanged(object sender, EventArgs e) { SelectableViewModel selectable = sender as SelectableViewModel; if (selectable.IsSelected) { AddSelection(selectable); } else { RemoveSelection(selectable); } RaiseSelectionChanged(); }
private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { SelectableViewModel selectable = e.Item as SelectableViewModel; if (e.Action == NotifyCollectionChangedAction.Remove) { RemoveSelection(selectable); selectable.IsSelectedChanged -= OnIsSelectedChanged; } else if (e.Action == NotifyCollectionChangedAction.Add) { if (selectable.IsSelected) { AddSelection(selectable); } selectable.IsSelectedChanged += OnIsSelectedChanged; } else { throw new Exception("Unsupported collection action"); } }
private void RemoveSelection(SelectableViewModel selectable) { selectionOrder.Remove(selectable); }