bool guard = false; // to prevent reentrancy void FigureExplorer_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (guard) { return; } guard = true; foreach (var deselected in e.RemovedItems) { IFigure deselectedFigure = deselected as IFigure; if (deselectedFigure != null) { deselectedFigure.Selected = false; } } foreach (var selected in e.AddedItems) { IFigure selectedFigure = selected as IFigure; if (selectedFigure != null) { selectedFigure.Selected = true; } } CurrentDrawing.RaiseSelectionChanged(CurrentDrawing.GetSelectedFigures()); guard = false; }
private void SyncFigureExplorerSelection() { if (guard) { return; } guard = true; // Temporary Solution. This causes figure's name change to show in FigureExplorer. - D.H. // Same temporary solution is used in ToggleFigureExplorer. if (FigureExplorer.Visible) { FigureExplorer.ItemsSource = null; List <IFigure> figureIncludes = new List <IFigure>(); foreach (IFigure f in CurrentDrawing.Figures) { if (!(f is IPoint)) { figureIncludes.Add(f); } } FigureExplorer.ItemsSource = figureIncludes; } // End Temporary Solution FigureExplorer.SelectedItem = null; foreach (var selectedFigure in CurrentDrawing.GetSelectedFigures()) { FigureExplorer.SelectedItems.Add(selectedFigure); } guard = false; }
protected virtual void ShowSelectionProperties() { var selection = CurrentDrawing.GetSelectedFigures().ToArray(); if (selection.Length == 1) { ShowProperties(selection[0]); } else if (selection.Length > 1) { ShowProperties(selection); } else { ShowProperties(null); } }
private void FigureItems_SelectionChanged(object sender, SelectionChangedEventArgs e) { var selected = FigureItems.SelectedItem; IFigure selectedFigure = selected as IFigure; if (selectedFigure != null) { selectedFigure.Selected = true; } pg.Show(selectedFigure, CurrentDrawing.ActionManager); //FigureItems.SelectedValue = selectedFigure; CurrentDrawing.RaiseSelectionChanged(CurrentDrawing.GetSelectedFigures()); }