调整大小时如何保持WPFUserControl的宽高比?

时间:2019-08-03 07:29:32

标签: c# wpf user-controls

我已经创建了WPF用户控件,并且希望它在更改width或height属性时能够自动调整大小。例如,当修改Width时,则Height=Width/2,而当修改Height时,则Width=2*Height

我尝试在UserControl_SizeChanged事件上使用一些布尔值来检测一个属性是否已更改,并将另一个属性设置为适当的值。问题在于,调整大小仅适用于一侧。如果更改宽度,它可以工作,但高度会冻结。

我发现错误可能是因为在更改尺寸的事件中我设置了尺寸尺寸,所以该事件再次被触发。然后,我尝试使Width属性“覆盖”,并且SizeChanged仅根据调整后的高度调整Width。


public new double Width { get => base.Width; set { Height = value / 2; } }
private void UserControl_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            base.Width = 2 * e.NewSize.Height;
        }

如果控件的大小为80x40,我希望将Width设置为100时,Height会变成50,但不会。但是,将Height设置为50时,Width变为100,这是正确的。我在哪里错了?

0 个答案:

没有答案