Как переставить детей холста на ArrangeOverride wpf
У меня есть холст, где дети динамически добавляются к холсту. Допустим, изображение размещено слева = 50, сверху 50 при ширине холста (500) и высоте (200). Когда окно развернуто до максимума, изменяются ширина и высота холста ( 1000, 400), на этот раз требуется изменить положение изображения в соответствии с шириной и высотой холста. На основании исследований выяснилось, что надо внедрять
Методы MeasureOverride и ArrangeOverride панели.
Здесь пользователь может добавить любое количество элементов на холст, желая масштабировать дочерних элементов относительно размера холста.
Как реализовать логику в описанных выше методах?
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
методы.