如何保持图像的原始宽高比而不溢出父控件?

How to keep image in original aspect ratio and not overflowing parent control?

我有一个 WPF 应用程序,主要布局基于网格。在 Column 中,我在堆栈面板中有一个图像,但源太大(垂直)。问题是,它在父元素结束的底部被切割。如果我向下调整 window 的大小,图像最终会自行显示并保持在中心,这很好。但是,当向右调整大小时,图像会调整大小,并下溢到它的父级。我正在寻找一种方法:

这可能吗?

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <StackPanel>
        <Label Margin="10,20,10,0" Content="Name:" />
        <TextBox Margin="10,0" Name="nameTextBox" TabIndex="0" FontSize="16" />
        <Label Margin="10,20,10,0" Content="Pass:" />
        <TextBox Margin="10,0" Name="passTextBox" TabIndex="1" FontSize="16" />
        <Image Name="logoImage" Margin="10" Source="pics/icon.png"/>
    </StackPanel>
</Grid>

你想要这样的东西吗?

<DockPanel>
  <StackPanel DockPanel.Dock="Top">
      <Label Margin="10,20,10,0" Content="Name:" />
      <TextBox Margin="10,0" Name="nameTextBox" TabIndex="0" FontSize="16" />
      <Label Margin="10,20,10,0" Content="Pass:" />
      <TextBox Margin="10,0" Name="passTextBox" TabIndex="1" FontSize="16" />
   </StackPanel>
   <Viewbox Stretch="Uniform" DockPanel.Dock="Bottom">
       <Image Name="logoImage" Margin="10" Source="pics/text.png"/>
   </Viewbox>
</DockPanel>

您需要从 StackPanel 中删除该图像,因为 StackPanel 的垂直增长总是与内容的高度一样多,然后您可以使用 ViewBox