public void SelectRect(string rectname)
 {
     if (selected_rectangle != null)
     {
         selected_rectangle.Unselect();
     }
     selected_rectangle = SomeUtilities.FindChild <RectangleNamed>(canvas1, rectname);
     selected_rectangle.Select();
 }
 public void RectangleNamed_MouseDown(object sender, MouseButtonEventArgs e)
 {
     DragInProgress = true;
     if (sender is RectangleNamed)
     {
         if (selected_rectangle != null)
         {
             SaveItem(rectangle);
             selected_rectangle.Unselect();
             selected_rectangle = null;
         }
         selected_rectangle = (RectangleNamed)sender;
         selected_rectangle.Select();
     }
 }
        // Start dragging.
        private void canvas1_MouseDown(object sender, MouseButtonEventArgs e)
        {
            MouseHitType = SetHitType(rectangle, Mouse.GetPosition(canvas1));
            SetMouseCursor();

            if (selected_rectangle != null && e.OriginalSource is Canvas)
            {
                selected_rectangle.Unselect();
                NotifySelectionChanged(selected_rectangle.description, selected_rectangle.isSelected);
                selected_rectangle = null;
                return;
            }
            if (MouseHitType == HitType.None)
            {
                return;
            }

            LastPoint      = Mouse.GetPosition(canvas1);
            DragInProgress = true;

            try
            {
                if (selected_rectangle != null)
                {
                    selected_rectangle.Unselect();
                    NotifySelectionChanged(selected_rectangle.description, selected_rectangle.isSelected);
                }
                //Проверяем чтобы был нажат один из элементов на RectangleNamed
                //if (e.OriginalSource is Rectangle)
                //    selected_rectangle = (RectangleNamed)((Rectangle)e.OriginalSource).Parent;
                //if (e.OriginalSource is TextBlock)
                //    selected_rectangle = (RectangleNamed)((TextBlock)e.OriginalSource).Parent;
                selected_rectangle = selectRectangleNamed(e.OriginalSource);
                selected_rectangle.Select();
                NotifySelectionChanged(selected_rectangle.description, selected_rectangle.isSelected);
            }
            catch (Exception err) { }
        }
        // Stop dragging.
        private void canvas1_MouseUp(object sender, MouseButtonEventArgs e)
        {
            DragInProgress = false;

            if (e.OriginalSource is RectangleNamed)
            {
                NotifyPositionChanged(rectangle.description);
                if (selected_rectangle != null)
                {
                    //if (e.OriginalSource is Rectangle)
                    //    rectangle = (RectangleNamed)((Rectangle)e.OriginalSource).Parent;
                    //if (e.OriginalSource is TextBlock)
                    //    rectangle = (RectangleNamed)((TextBlock)e.OriginalSource).Parent;
                    selected_rectangle = selectRectangleNamed(e.OriginalSource);
                    selected_rectangle.Select();
                    NotifySelectionChanged(selected_rectangle.description, selected_rectangle.isSelected);
                }
                else
                {
                    NotifySelectionChanged("None", false);
                }
            }
        }