通用应用程序中心图像垂直和水平(xaml/wpf)

JP *_*ons 0 wpf xaml win-universal-app

我试图使用网格(在网格内)

<Grid HorizontalAlignment="Stretch" Background="#2f1807" Grid.Column="1" Grid.Row="0">
    <Grid.RowDefinitions>
        <RowDefinition Height="71"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition Width="505"/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Image Source="Assets/logo.png" Height="71" Width="505" Grid.Column="1" Grid.Row="0" Stretch="None" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

图像的高度为71像素,宽度为505像素.这是输出: 在此输入图像描述 所以水平中心工作,但没有垂直,图像宽度应该填满整个单元格.为什么这不起作用?

输出uniform:

在此输入图像描述

image prop(抱歉荷兰语)尺寸为505宽度和71像素高度.

在此输入图像描述

编辑为@YoupTube建议:

<Image 
    Source="Assets/logo.png" 
    Height="71" 
    Width="505" 
    Grid.Column="1" 
    Grid.Row="0" 
    MinWidth="505" 
    MinHeight="71" 
    VerticalAlignment="Center" />
Run Code Online (Sandbox Code Playgroud)

得到:

在此输入图像描述

She*_*dan 5

你的问题是,你已经限制HeightGrid,这样它的大小相同Image.解决的办法是去除Height上的设置RowDefinition(或删除整个RowDefinition),并让Grid填充其父容器的空间... 然后所述Image可垂直居中:

<Grid HorizontalAlignment="Stretch" Background="#2f1807" Grid.Column="1" Grid.Row="0">
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition Width="505"/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Image Source="Assets/logo.png" Height="71" Width="505" Grid.Column="1" 
        Grid.Row="0" Stretch="None" HorizontalAlignment="Center"
        VerticalAlignment="Center" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

更新>>>

为了使您的Image垂直居中,它必须位于一个Height比值大的容器中Image.我看你Grid是在另一个Grid...如果Image占用了整个Height的这个Grid,那么你必须把这个Grid变成有更多的容器Height比这Grid和中心,与其:

<Grid HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="#2f1807" 
    Grid.Column="1" Grid.Row="0" MinHeight="150">
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition Width="505"/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Image Source="Assets/logo.png" Height="71" Width="505" Grid.Column="1" 
        Grid.Row="0" Stretch="None" HorizontalAlignment="Center"
        VerticalAlignment="Center" />
</Grid>
Run Code Online (Sandbox Code Playgroud)