当父级 (canvas) Size_Changed 被触发时,第 Size_Changed 行事件不会触发

Line Size_Changed event doesn't fire when parent (canvas) Size_Changed is fired

我有一个canvas,我想在上面画几条线。哪个工作正常。 但我也想移动线条,当 canvas 的大小更改为新位置时。所以我在每一行

添加了一个 Size_Changed 的事件处理程序
liMonth.SizeChanged += LiMonth_SizeChanged;

但是,当我更改父级 window 的大小时,Canvas 的 Size_Changed 事件被触发,而不是该行的 Size_Changed 事件.

如何让 canvas 在大小更改时为其子项触发 size_changed 事件?

我在矩形上也有同样的问题,它也在 canvas 上,但我认为这是同样的问题。

A Canvas 从不调整其子元素的大小,因此不会为您的直线和矩形触发 SizeChanged 事件。

将重新定位代码放入 Canvas' SizeChanged 事件的处理程序中:

private void Canvas_SizeChanged(object sender, SizeChangedEventArgs e)
{
    Canvas canvas = (Canvas)sender;

    foreach (var line in canvas.Children.OfType<Line>())
    {
        line.X1 = ...
        line.X2 = ...
    }
}