我创建了一个派生自UserControl
的类
我的任务是控制高度和宽度的大小比例。 (如果插入容器以控制它将调整大小。)我需要控件严格地为正方形。
如何更改控件的新尺寸? SizeChangedEventArgs.NewSize
属性是只读的。
private void MyControl_SizeChanged(object sender,SizeChangedEventArgs e)
{
if (e.NewSize.Height!=e.NewSize.Width)
{
// to-do ?
}
}
我的情况下的宽度和高度是NaN,因为模式设置为自动。我不能手动更改Width或Height属性,因为Control会自动固定大小,并且在缩放放置它的网格时不会改变。
答案 0 :(得分: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;
您可能需要为此添加一些验证以减少通话次数...