触发父(画布)Size_Changed时,Line Size_Changed事件不会触发

时间:2016-06-20 09:01:25

标签: c# wpf canvas drawing

我有一个画布,我想画几行。哪个工作正常。 但是当画布的大小变为新位置时,我也想移动线条。所以我已经为每行添加了一个Size_Changed的事件处理程序

liMonth.SizeChanged += LiMonth_SizeChanged;

但是,当我更改父窗口的大小时,会触发Canvas的Size_Changed事件,但不会触发该行的Size_Changed事件。

如果尺寸发生变化,如何让画布为其子节点触发size_changed事件?

我对一个矩形有同样的问题,它也在画布上,但我认为这是同样的问题。

1 个答案:

答案 0 :(得分:0)

Canvas永远不会调整其子元素的大小,因此没有为Line和Rectangles触发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 = ...
    }
}