如何在画布事件处理程序中设置children属性



我有一块画布,里面是一个形状。该画布有一个MouseLeftButtonDown事件处理程序。然后我把画布上的形状移到一个新的位置,但什么也没发生。

以下是添加形状的方式:

public MainWindow()
{
InitializeComponent();
Rectangle ShapeRect = new Rectangle() { Width=10,Height=10,Fill=Brushes.Blue};
Canvas_1.Children.Add(ShapeRect);            
}

这是事件处理程序:

private void Canvas_1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Canvas c = Canvas_1;
var firstchild = c.Children[0];
var RectCopy = c.Children.OfType<Rectangle>().FirstOrDefault();              
Canvas.SetTop(RectCopy, Canvas.GetTop(RectCopy) + 500);
Canvas.SetLeft(RectCopy, Canvas.GetLeft(RectCopy) + 500);
}

我已经测试了代码,它没有错误,所有的行都运行了,但显然没有效果。我认为这是因为RectCopy不是ShapeRect。欢迎任何不同的解决方案或答案。谢谢

在Initialize方法的底部添加以下行:

Canvas.SetTop(ShapeRect, 0);
Canvas.SetLeft(ShapeRect, 0);

当您到达处理程序时,Canvas.GetTop(...)的值为NaN

最新更新