using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Tango.SharedUI.Components { public class SelectedObjectCollection : ObservableCollection> { public event EventHandler SelectionChanged; public ObservableCollection Source { get; set; } public ObservableCollection SynchedSource { get; set; } public SelectedObjectCollection(ObservableCollection source, ObservableCollection synchedSource) { SynchedSource = synchedSource; Source = source; foreach (var item in source) { var selectedItem = new SelectedObject(item, synchedSource.Contains(item)); this.Add(selectedItem); selectedItem.IsSelectedChanged += SelectedItem_IsSelectedChanged; } } private void SelectedItem_IsSelectedChanged(object sender, EventArgs e) { SelectedObject item = sender as SelectedObject; if (item.IsSelected) { if (!SynchedSource.Contains(item.Data)) { SynchedSource.Add(item.Data); } } else { SynchedSource.Remove(item.Data); } SelectionChanged?.Invoke(this, new EventArgs()); } } }