UIElement不能在不同的名称空间内更改

时间:2019-05-14 08:05:51

标签: c# wpf uielement

我有一个在方法中调用类的委托。委托正在检测RectangleHere is how it's done)上的鼠标按下事件。在我尝试在SetLeftRectangle的方法中,我刚刚添加到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 个答案:

答案 0 :(得分:1)

Gate_Class显然不是UIElement。它应该具有Rectangle属性,该属性返回传递给其构造函数的Rectangle。然后,您可以设置Canvas.Left的{​​{1}}属性:

Rectangle

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

答案 1 :(得分:0)

我认为在代码的最后一行中,您正在提供Gate_list[Gate_list.Count - 1],但这是您的自定义类,而不是您刚刚创建的Rectangle。我可以从您的代码中推断出,您可以使用Rectangle来获得Gate_list[Gate_list.Count - 1].Get_Rect()

换句话说,在我看来,您需要添加.Get_Rect()才能真正获得矩形。

如果这不起作用,请提供您的Gate_Class的代码以及您收到的错误消息。