Перемещение объектов по холсту

225
15 июня 2018, 04:30

Здравcтвуйте, подскажите в чем может быть проблема, при добавлении элемента (элемент представляет собой UserControl и эллипсы) на Canvas (холст), я могу отслеживать координаты эллипсов только, только что добавленного элемента.

Если вкратце, добавляю элемент на холст, отслеживаются координаты эллипсов, добавляю новый элемент, отслеживаются координаты эллипсов нового элемента, а при перемещении старого, координаты эллипсов старого элемента не отслеживаются.

Добавление одного элемента

if (e.LeftButton == MouseButtonState.Pressed && url == "resistor.png")
     {
        resistor_UC rs = new resistor_UC();
        EoE = new EllipseOfElement { EllipseOfUC = rs.ResEl1, EllipseOfUC2 = rs.ResEl2 }; 
        rs.ResEl1.MouseRightButtonDown += ResEl1_MouseRightButtonDown;
        Random rnd = new Random();
        vm = new ViewModel { SelectedControl = rs, Pos=new Point(rnd.Next(100,300), rnd.Next(100, 300)) };
        ShortNameOfElement["resistor"] += 1;
        rs.ResistorTextBlock.Text = "R" + (ShortNameOfElement["resistor"]);
        FullElement.VisMod.Add(vm);
        FullElement.EllipsesOfElements.Add(EoE);
     }
     if (e.LeftButton == MouseButtonState.Pressed && url == "battary.png")
     {
        battary_UC btr = new battary_UC();
        btr.BtEl1.MouseRightButtonUp += BtEl1_MouseRightButtonUp;
        EoE = new EllipseOfElement { EllipseOfUC = btr.BtEl1, EllipseOfUC2 = btr.BtEl2};
        Random rnd = new Random();
        vm = new ViewModel { SelectedControl = btr, Pos = new Point(rnd.Next(100, 300), rnd.Next(100, 300)) };
        ShortNameOfElement["battary"] += 1;
        btr.BattaryTextBlok.Text = "B" + (ShortNameOfElement["battary"]);
        FullElement.VisMod.Add(vm);
        FullElement.EllipsesOfElements.Add(EoE);
     }

Само отслеживание

private void ContentPresenter_MouseMove(object sender, MouseEventArgs e)
  {
     if (e.LeftButton == MouseButtonState.Pressed)
     {
        var p = e.GetPosition(this);
        obj.MoveRef(p - PosObj);
        PosObj = p;
        PosOfEl =  EoE.EllipseOfUC.TransformToVisual(ic_canvas).Transform(new Point(EoE.EllipseOfUC.ActualHeight / 2, EoE.EllipseOfUC.ActualWidth / 2));
        PosOfEl2 = EoE.EllipseOfUC2.TransformToVisual(ic_canvas).Transform(new Point(EoE.EllipseOfUC.ActualHeight / 2, EoE.EllipseOfUC.ActualWidth / 2));

        Title = "Первый элипс" + PosOfEl.ToString() + " Второй элипс" + PosOfEl2.ToString();
     }
  }

Класс эллипсов

public class EllipseOfElement : INotifyPropertyChanged
{
  Ellipse ellipseOfUC;
  public Ellipse EllipseOfUC
  {
     get { return ellipseOfUC; }
     set
     {
        ellipseOfUC = value;
     }
  }
  Ellipse ellipseOfUC2;
  public Ellipse EllipseOfUC2
  {
     get { return ellipseOfUC2; }
     set
     {
        ellipseOfUC2 = value;
     }
  }

  public Point posOfEllipse;
  public event PropertyChangedEventHandler PropertyChanged;
  public Point PosOfEllipse
  {
     get { return posOfEllipse; }
     set
     {
        posOfEllipse = value;
        if (PropertyChanged != null)
           PropertyChanged(this, new PropertyChangedEventArgs("PosOfEllipse"));
     }
  }
}

Добавляю элемент (vm), добавляю эллипсы (EoE). ПОможет даже идея хотя бы.

READ ALSO
Изменение размера и жирности шрифта в заголовке текста, внутри richtextbox

Изменение размера и жирности шрифта в заголовке текста, внутри richtextbox

Имеется richtextbox, текст в нем меняется по клику кнопки, у каждого куска текста есть свой заголовок

197
API VK C# требуется имя метод

API VK C# требуется имя метод

ошибка Требуется имя метода

287
Копирование строк из dataGridView1 в dataGridView2

Копирование строк из dataGridView1 в dataGridView2

На форме есть dataGridView1 и dataGridView2При запуске формы dataGridView1 заполняется тремя столбцами из файла mdb

225