-1

我有画布,孩子们被动态添加到画布中,可以说图像放置在左侧 = 50,当画布宽度(500)和高度(200)时,顶部 50。当窗口最大化时,画布宽度和高度发生变化(1000、400),这一次想要根据画布宽度和高度重新排列图像位置。根据研究发现,必须实施

面板的 MeasureOverride 和 ArrangeOverride 方法。

在这里,用户可以向画布添加任意数量的项目,想要相对于画布大小缩放子项。

如何实现上述方法中的逻辑?

4

1 回答 1

1

您可以在事件的事件处理程序中实现您的逻辑(无论是什么)SizeChanged

private void Canvas_SizeChanged(object sender, SizeChangedEventArgs e)
{
    Canvas canvas = sender as Canvas;
    Size size = e.NewSize;
    foreach (UIElement child in canvas.Children)
    {
        //set the new postion of each element according to your logic
        Canvas.SetLeft(child, );
    }
}

<Canvas x:Name="canvas" Width="500" Height="200" Background="Yellow" SizeChanged="Canvas_SizeChanged">
    <Button Content="..." Canvas.Left="50" Canvas.Top="50" />
</Canvas>

没有理由创建自定义Panel并覆盖MeasureOverrideandArrangeOverride方法。

于 2017-08-22T10:41:16.033 回答