У меня есть UserControl и этот UserControl должен быть изменен с использованием соотношения сторон. Это означает: ширина: высота = 2: 1. В настоящее время я использую этот код:WPF Resize UserControl с соотношением сторон
protected override Size ArrangeOverride(Size arrangeBounds)
{
if (ActualWidth == 0 || ActualHeight == 0) return arrangeBounds;
base.ArrangeOverride(arrangeBounds);
double ratio = 2;
if (Parent != null)
{
var size = new Size(arrangeBounds.Height * ratio, arrangeBounds.Height);
double containerWidth = ((FrameworkElement)Parent).ActualWidth;
if (containerWidth < size.Width)
{
double newHeight = arrangeBounds.Height * (containerWidth/size.Width);
canvas.Width = newHeight * ratio;
canvas.Height = newHeight;
}
else
{
canvas.Width = size.Height * ratio;
canvas.Height = size.Height;
}
}
return arrangeBounds;
}
Но это на самом деле не работает. Это означает, что он работает, но не каждый раз. Если я макс. в окне он иногда не изменяется, поэтому его бит «случайный», если элемент управления будет изменен. Поэтому, если бы у кого-то было бы лучшее решение, если бы было очень приятно.
Основная проблема заключается в том, что высота может стать слишком большой. Потому что, если ширина контейнера составляет 3000 пикселей, а высота 600 пикселей i будет масштабировать высоту до 1500 пикселей. Так что это будет tooooooo большой. –
Условные обозначения можно обрабатывать в конвертере ... – EtherDragon