C# UIElement可以';不能在不同的名称空间中更改
编辑:对于OOP的新程序员来说,仅仅调用类是不够的,如果语法正在寻找特定的变量类型,它将抛出一个错误。这就是下面回答的问题,这一行代码: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
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_类中添加方法来获得矩形。我是个白痴,忘记了简单的集合,试图让它变得更复杂。对不起。是的,我忘了在末尾添加。矩形。谢谢是的,我忘了加。最后是矩形。谢谢