我已经创建了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
,这是正确的。我在哪里错了?