UIElement нельзя изменить внутри другого пространства имен - PullRequest
0 голосов
/ 14 мая 2019

У меня есть делегат, который вызывает класс в методе.Делегат обнаруживает событие нажатия мыши на Rectangle ( Вот как это делается ).В методе, который я пытаюсь SetLeft на Rectangle, я просто добавил к Canvas, но получаю ошибку CS1503.

Я пытался преобразовать его в System.Windows.UIElement, но система может 'не может быть преобразован.

public partial class Program
{
    public void Rect_Button_MouseDown(MainWindow MainWind, string Tag)
    {
        Point Pos = new Point();
        Pos = System.Windows.Input.Mouse.GetPosition(MainWind.Main_Canvas);
        if (Drag == false)
        {
            Drag = true;
            Gate_list.Add(new Gate_Class(Convert.ToInt32(Tag),new Rectangle()));
            MainWind.Main_Canvas.Children.Add(Gate_list[Gate_list.Count-1].Get_Rect());
            System.Windows.Controls.Canvas.SetLeft(Gate_list[Gate_list.Count - 1], Pos.X);
        }
    }
}

Я думаю, что должно быть удалено для передачи system.windows, но я не знаю, если вы можете помочь с этим, так что это не так грязно, что также поможет.

Цель состоит в том, чтобы найти способ конвертировать Gate_list[] в UIElement.Любое решение приветствуется или любые другие методы.

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Gate_Class, по-видимому, не UIElement. Он должен иметь свойство Rectangle, которое возвращает Rectangle, которое вы передаете его конструктору. Затем вы можете установить Canvas.Left свойство Rectangle:

System.Windows.Controls.Canvas.SetLeft(Gate_list[Gate_list.Count - 1].Rectangle, Pos.X);

public class Gate_Class
{
    public Gate_Class(int tag, Rectangle rectangle)
    {
        //...
        Rectangle = rectangle;
    }

    public Rectangle Rectangle { get; }
}
0 голосов
/ 14 мая 2019

Я думаю, что в последней строке вашего кода вы предоставляете Gate_list[Gate_list.Count - 1], но это ваш пользовательский класс, а не Rectangle, который вы только что создали. Я могу вывести из вашего кода, что вы можете получить Rectangle, используя Gate_list[Gate_list.Count - 1].Get_Rect().

Другими словами, мне кажется, что вам нужно добавить .Get_Rect () для фактического получения прямоугольника.

Если это не работает, укажите код вашего Gate_Class и сообщение об ошибке, которое вы получаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...