我有一个 UserControl 并且必须使用纵横比调整 UserControl 的大小。这意味着:宽度:高度 = 2:1。目前我正在使用这段代码:
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;
}
但它并没有真正起作用。这意味着它有效,但并非每次都有效。如果我最大。它有时不会调整窗口大小,因此如果控件调整大小,它有点“随机”。因此,如果有人有更好的解决方案,那就太好了。