0

我创建了一个派生类UserControl
我的任务是控制高度和宽度的大小比例。(如果将容器插入到控件中,则会调整它的大小。)我需要控件是严格的正方形。

应该怎么做才能改变控件的新维度?SizeChangedEventArgs.NewSize属性是只读的。

private void MyControl_SizeChanged(object sender,SizeChangedEventArgs e)
{
    if (e.NewSize.Height!=e.NewSize.Width)
    {
        // to-do ?
    }
}

在我的情况下,宽度和高度是 NaN,因为模式设置为自动。我无法手动更改 Width 或 Height 属性,因为那时 Control 将自动固定大小,并且在您缩放放置它的网格时不会改变。

4

1 回答 1

3

如果您希望控件完全是方形的,最简单的方法是使用如下绑定:

<Control Width="{Binding RelativeSource={RelativeSource Self}, Path=ActualHeight}"/>

编辑 好的,看起来你可以很好地使用你的事件处理程序:

FrameworkElement control =(sender as FrameworkElement);
double longerSideLength = (control.Width >= control.Height ? control.Width : control.Height);
control.Width = longerSideLength;
control.Height = longerSideLength;

您可能希望为此添加一些验证以减少呼叫次数...

于 2013-03-01T09:23:51.317 回答