2013-04-25 3 views
3

Привет, я хочу, чтобы мой графический объект «был выбран» после нажатия на них.Выбор графического объекта

я tryied что-то подобное, чтобы сделать выбранную строку:

else if (e.OriginalSource is Line) 
     { 
      LineFocus = true; 
      MojaLinia = (Line)e.OriginalSource; 

      Rectangle rect_1 = new Rectangle 
      { 
       Stroke = Brushes.Black, 
       StrokeThickness = 1, 
       Fill = new SolidColorBrush(Color.FromRgb(255, 255, 255)) 
      }; 
      rect_1.Width = 6; 
      rect_1.Height = 6; 

      Canvas.SetLeft(rect_1, MojaLinia.X1); 
      Canvas.SetTop(rect_1, MojaLinia.Y1); 
      canvas.Children.Add(rect_1); 
      Rectangle rect_2 = new Rectangle 
      { 
       Stroke = Brushes.Black, 
       StrokeThickness = 1, 
       Fill = new SolidColorBrush(Color.FromRgb(255, 255, 255)) 
      }; 
      rect_2.Width = 6; 
      rect_2.Height = 6; 

      Canvas.SetLeft(rect_2, MojaLinia.X2); 
      Canvas.SetTop(rect_2, MojaLinia.Y2); 
      canvas.Children.Add(rect_2); 
     } 

Его немного глупо, и его трудно сделать белый прямоугольник с расстоянием от линии. Есть ли хороший способ сделать это без тонн if()?

Im using VS2012, WPF/C#.

ответ

1

Вы можете использовать Adorners, чтобы показать свою форму как «выбранную», таким образом вы также можете сделать «выбранное» состояние визуальным намеком в XAML.

И вы можете использовать Attached Property для «добавления» объекта IsSelected (например, boolean) к вашему объекту и переключать значение каждый раз, когда происходит событие щелчка.

Смежные вопросы