动态改变控件的大小?

时间:2013-03-01 08:54:00

标签: c# wpf resize controls override

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

如何更改控件的新尺寸? SizeChangedEventArgs.NewSize属性是只读的。

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

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

1 个答案:

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

您可能需要为此添加一些验证以减少通话次数...