C# UIElement可以';不能在不同的名称空间中更改

C# UIElement可以';不能在不同的名称空间中更改,c#,wpf,uielement,C#,Wpf,Uielement,编辑:对于OOP的新程序员来说,仅仅调用类是不够的,如果语法正在寻找特定的变量类型,它将抛出一个错误。这就是下面回答的问题,这一行代码: System.Windows.Controls.Canvas.SetLeft(Gate_list[Gate_list.Count - 1], Pos.X); 它有一个致命的错误,Canvas.SetLeft正在查找Canvas子类(在本例中为矩形)和点。然而,我在应该是Gate\u list[Gate\u list.Count-1]的时候发送了一个类类型Ga

编辑:对于OOP的新程序员来说,仅仅调用类是不够的,如果语法正在寻找特定的变量类型,它将抛出一个错误。这就是下面回答的问题,这一行代码:

System.Windows.Controls.Canvas.SetLeft(Gate_list[Gate_list.Count - 1], Pos.X);
它有一个致命的错误,
Canvas.SetLeft
正在查找Canvas子类(在本例中为矩形)和点。然而,我在应该是
Gate\u list[Gate\u list.Count-1]的时候发送了一个类类型
Gate\u list[Gate\u list.Count-1]

编辑结束

我有一个委托在方法中调用一个类。代理在
矩形上检测到鼠标按下事件。在这个方法中,我试图在一个
矩形上
SetLeft
,我刚刚添加到
画布上
,但是得到了错误CS1503

我已尝试将其转换为
System.Windows.UIElement
,但无法转换系统

公共部分类程序
{
公共无效矩形按钮鼠标向下(主窗口主风,字符串标记)
{
点位置=新点();
Pos=System.Windows.Input.Mouse.GetPosition(MainWind.Main_画布);
如果(拖动==false)
{
阻力=真;
Gate_list.Add(新的Gate_类(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);
}
}
}
我相信应该有一个传送系统。但我不知道


我的问题归结为找到一种将
Gate\u list[]
转换为
UIElement
的方法,我认为在代码的最后一行,您提供了
Gate\u list[Gate\u list.Count-1]
,但这是您的自定义类,而不是刚刚创建的
矩形。我可以从您的代码推断,您可以使用
Gate\u list[Gate\u list.Count-1].get\u Rect()
获得
矩形

换句话说,在我看来,您需要添加.Get_Rect()来实际获取矩形


如果这不起作用,请提供您的
Gate\u类的代码和您收到的错误消息。

我认为在代码的最后一行您提供的是
Gate\u列表[Gate\u list.Count-1]
,但这是您的自定义类,而不是您刚刚创建的
矩形。我可以从您的代码推断,您可以使用
Gate\u list[Gate\u list.Count-1].get\u Rect()
获得
矩形

换句话说,在我看来,您需要添加.Get_Rect()来实际获取矩形


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

Gate\u类
显然不是
UIElement
。它应该有一个
Rectangle
属性,返回传递给其构造函数的
Rectangle
。然后可以设置
矩形的
Canvas.Left
属性:

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


Gate\u Class
显然不是
ui元素
。它应该有一个
Rectangle
属性,返回传递给其构造函数的
Rectangle
。然后可以设置
矩形的
Canvas.Left
属性:

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


您应该向我们展示Gate_类是如何工作的,因为它应该是UIElement兼容的(从代码中可以看出)。注意,在给局部变量赋值之前,直接用默认值初始化它是没有用的。只需编写
pointpos=System.Windows.Input.Mouse.GetPosition(MainWind.Main\u画布)我忘记在类Gate_类中添加方法来获得矩形。我是个白痴,忘记了简单的集合,试图让它变得更复杂。对不起,你应该向我们展示Gate_类是如何的,因为它应该是UIElement兼容的(从你的代码中可以看出)。值得注意的是,在给局部变量赋值之前,直接用默认值初始化它是没有用的。只需编写
pointpos=System.Windows.Input.Mouse.GetPosition(MainWind.Main\u画布)我忘记在类Gate_类中添加方法来获得矩形。我是个白痴,忘记了简单的集合,试图让它变得更复杂。对不起。是的,我忘了在末尾添加。矩形。谢谢是的,我忘了加。最后是矩形。谢谢