动态更改控件的大小

本文关键字:控件 动态 | 更新日期: 2023-09-27 18:01:37

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

如何更改控件的新维度?

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

宽度和高度在我的情况下是NaN,因为模式被设置为自动。我不能手动更改宽度或高度属性,从那时起,控制将自动固定大小,不改变,当你在其中放置缩放网格

动态更改控件的大小

如果您想要一个完全正方形的控件,最简单的方法是使用如下绑定:

<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;

您可能想要添加一些验证来减少调用计数…