动态更改控件的大小
本文关键字:控件 动态 | 更新日期: 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;
您可能想要添加一些验证来减少调用计数…