我有一个在方法中调用类的委托。委托正在检测Rectangle
(Here is how it's done)上的鼠标按下事件。在我尝试在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
的方法。欢迎使用任何解决方案或任何其他方法。
答案 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
的代码以及您收到的错误消息。