这与how-do-i-keep-aspect-ratio-on-scalable-scrollable-content-in-wpf类似,但有以下不同之处:
答案 0 :(得分:1)
您应该将网格的宽度和高度绑定到一个值:
<!--Dont forget to specify source where MaxSizeParam lies-->
<Grid Width="{Binding MaxSizeParam}" Height="{Binding MaxSizeParam}"/>
MaxSizeParam您可以以您想要的方式提供任何您想要的地方。例如,如果网格有Button,那么在Button的SizeChanged事件中你应该重新计算MaxSizeParam:
void button_SizeChanged(object sender, SizeChangedEventArgs e)
{
MaxSizeParam = e.NewSize.Width > e.NewSize.Height ? e.NewSize.Width : e.NewSize.Height;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("MaxSizeParam"));
}
答案 1 :(得分:1)
您只需要将其中一个参数Width
或Height
绑定到另一个:
<Image x:Name="image" Height="{Binding Width, ElementName=image}"/>