XAML WPF:如何在图像改变大小时在图像上定位文本标签?

yvfmudvl  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(152)

我在一个网格控件中有一个图像,当我调整窗口大小时,图像的大小变化得很好,谨慎地保持了它的纵横比(均匀拉伸)。如果我把窗口做得很高,图像会保持居中和(相对)小,上面和下面有空白。到目前为止一切都很好。
我试着在图片的左下角放一个小的文本标签,我希望标签保持在图片的顶部,即使下面有多余的空白。到目前为止,我所尝试的一切都是相对于 * 网格单元格本身 * 的底部来定位文本,而不是(动态变化的)* 图片 * 的底部。
我试过使用Grid的auto*,也试过使用Canvas,但我很困惑。我错过了什么?(注意,我对XAML或C#解决方案都很满意。)

<Grid>
    <Grid.RowDefinitions> <RowDefinition Height="*"/> </Grid.RowDefinitions>
    <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions>
    <Image Grid.Column="0" Grid.Row="0" Source="{Binding Path=Bitmap}"/>
    <TextBox Grid.Column="0" Grid.Row="0" 
             HorizontalAlignment="Left" HorizontalContentAlignment="Center"
             Opacity="0.85" Text="..." 
            VerticalAlignment="Bottom" VerticalContentAlignment="Center"/>
</Grid>

错误:

也是错误的:

右侧:

s5a0g9ez

s5a0g9ez1#

您可以将ImageTextBox都与另一个Grid Package 在一起,并设置HorizontalAlignment="Center"VerticalAlignment="Center",使内部Grid适合Image的大小,但不填充外部Grid

<Grid>
    <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
        <Image Source="{Binding Path=Bitmap}"/>
        <TextBox HorizontalAlignment="Left" VerticalAlignment="Bottom"
                 HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
                 Opacity="0.85" Text="..."/>
    </Grid>
</Grid>

相关问题