我有画布,孩子们被动态添加到画布中,可以说图像放置在左侧 = 50,当画布宽度(500)和高度(200)时,顶部 50。当窗口最大化时,画布宽度和高度发生变化(1000、400),这一次想要根据画布宽度和高度重新排列图像位置。根据研究发现,必须实施
面板的 MeasureOverride 和 ArrangeOverride 方法。
在这里,用户可以向画布添加任意数量的项目,想要相对于画布大小缩放子项。
如何实现上述方法中的逻辑?
我有画布,孩子们被动态添加到画布中,可以说图像放置在左侧 = 50,当画布宽度(500)和高度(200)时,顶部 50。当窗口最大化时,画布宽度和高度发生变化(1000、400),这一次想要根据画布宽度和高度重新排列图像位置。根据研究发现,必须实施
面板的 MeasureOverride 和 ArrangeOverride 方法。
在这里,用户可以向画布添加任意数量的项目,想要相对于画布大小缩放子项。
如何实现上述方法中的逻辑?
您可以在事件的事件处理程序中实现您的逻辑(无论是什么)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
并覆盖MeasureOverride
andArrangeOverride
方法。