我有画布,其中儿童动态添加到画布,假设图像放在左边= 50,顶部50放置画布宽度(500)和高度(200)。当窗口最大化时,画布宽度和高度会发生变化(1000,400),此时需要根据画布宽度和高度重新排列图像位置。根据研究发现,必须实施
面板的MeasureOverride和ArrangeOverride方法。
此处用户可以向画布添加任意数量的项目,想要相对于画布大小缩放子项。
如何在上述方法中实现逻辑?
答案 0 :(得分: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
并覆盖MeasureOverride
和ArrangeOverride
方法。