private void Map_SelectedObjectChanged(CelestialObject body) { if (body != null) { SelectedObjectName = body.Names.First(); if (!SelectedObjectsMenuItems.Any()) { SelectedObjectsMenuItems.Add(new MenuItemVM() { Header = "Clear all", Command = ClearObjectsHistoryCommand }); SelectedObjectsMenuItems.Add(null); } var existingItem = SelectedObjectsMenuItems.FirstOrDefault(i => body.Equals(i?.CommandParameter)); if (existingItem != null) { SelectedObjectsMenuItems.Remove(existingItem); } SelectedObjectsMenuItems.Insert(2, new MenuItemVM() { Command = CenterOnObjectCommand, CommandParameter = body, Header = SelectedObjectName }); // 10 items of history + "clear all" + separator if (SelectedObjectsMenuItems.Count > 13) { SelectedObjectsMenuItems.RemoveAt(0); } } else { SelectedObjectName = "<No object>"; } NotifyPropertyChanged(nameof(SelectedObjectName)); }
private void ClearObjectsHistory() { SelectedObjectsMenuItems.Clear(); }