/// <summary> /// Конструктор окна /// </summary> /// <param name="guid">Guid фигуры которую нужно редактировать, если NULL - режим создания новой фигуры</param> /// <param name="shapeType">Тип фигуры</param> public CreateOrEditWindow(Guid? guid, ShapeInfo.ShapeType shapeType = ShapeInfo.ShapeType.Circle) { _guid = guid; _shapeType = shapeType; InitializeComponent(); // заполняем выпадающий список с цветами ColorList.ItemsSource = new List<string> {"Red", "Green", "Blue"}; ColorList.SelectedIndex = 0; // Если GUID заполнен то включаем режим редактирования фигуры с таким guid if (_guid.HasValue) { InitEditMode(); } // иначе включаем режим добавления новой фигуры else { InitCreateMode(); } }
/// <summary> /// Выполняет обновление рабочей области /// </summary> private void RefreshAll() { using (var gc = new GeometryContext()) { // очищаем канвас FieldCanvas.Children.Clear(); // создаем новый лист/список с фигурами var shapeInfoList = new List<ShapeInfo>(); // обрабатываем круги foreach (var circle in gc.Circles) { // добавляем в DataGrid shapeInfoList.Add(new ShapeInfo( circle.Id, ShapeInfo.ShapeType.Circle, circle.GetInfo(), circle.Position.ToString(), circle.Color.Title )); // рисуем фигуру Ellipse ellipse = new Ellipse { Height = circle.Radius*2, Width = circle.Radius*2, Fill = circle.Color.GetBrush() }; // устанавливаем на канвасе с указанными координатами ellipse.SetValue(Canvas.LeftProperty, circle.Position.CoordX); ellipse.SetValue(Canvas.TopProperty, circle.Position.CoordY); FieldCanvas.Children.Add(ellipse); } // обрабатываем прямоугольники foreach (var rec in gc.Rectangles) { // добавляем в DataGrid shapeInfoList.Add(new ShapeInfo( rec.Id, ShapeInfo.ShapeType.Rectangle, rec.GetInfo(), rec.Position.ToString(), rec.Color.Title )); // рисуем фигуру Rectangle recShape = new Rectangle { Width = rec.Width, Height = rec.Height, Fill = rec.Color.GetBrush() }; // устанавливаем на канвасе с указанными координатами recShape.SetValue(Canvas.LeftProperty, rec.Position.CoordX); recShape.SetValue(Canvas.TopProperty, rec.Position.CoordY); FieldCanvas.Children.Add(recShape); } _activeShape = null; ButtonDelete.IsEnabled = false; ButtonEdit.IsEnabled = false; // Закидываем в DataGrid информацию о всех фигурах DataView.ItemsSource = shapeInfoList; } }
/// <summary> /// Срабатывает когда пользователь изменил выделение в DataGrid /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DataView_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { _activeShape = (ShapeInfo) e.AddedItems[0]; ButtonDelete.IsEnabled = true; ButtonEdit.IsEnabled = true; } catch (Exception) { } }