Xaml 将文本块与页面底部对齐

Xaml 将文本块与页面底部对齐,xaml,windows-phone,Xaml,Windows Phone,我正在尝试将windows phone应用程序的版本与页面底部中间对齐。 它将其放置在视图中所有组件的底部(下方)。但不是在我的页面底部 <StackPanel> <TextBlock Text="Username:" Margin="12,0,0,0"/> <TextBox Text="{Binding UserName, Mode=TwoWay}" c4f:TextBinding.UpdateSourceOnChange="True" Input

我正在尝试将windows phone应用程序的版本与页面底部中间对齐。 它将其放置在视图中所有组件的底部(下方)。但不是在我的页面底部

<StackPanel>
    <TextBlock Text="Username:" Margin="12,0,0,0"/>
    <TextBox Text="{Binding UserName, Mode=TwoWay}" c4f:TextBinding.UpdateSourceOnChange="True" InputScope="EmailUserName" />
    <TextBlock Text="Password:" Margin="12,0,0,0"/>
    <PasswordBox Password="{Binding Password, Mode=TwoWay}" c4f:TextBinding.UpdateSourceOnChange="True" />
    <Button Content="Next" IsEnabled="{Binding CanMoveNext}" Command="{Binding LoginCommand}"/>
    <TextBlock Text="{Binding ConnectionError}"  TextWrapping="Wrap" FontSize="{StaticResource TitleSize}"></TextBlock>
    <TextBlock Text="{Binding VersionNumber}" Height="450" Padding="3" TextWrapping="Wrap" VerticalAlignment="Bottom" HorizontalAlignment="Center" FontSize="15"></TextBlock>
</StackPanel>


我希望它位于页面底部。

不要为此使用
StackPanel
,因为
StackPanel
只会使用其内容所需的空间(不会填满页面)

在这里,
Grid
DockPanel
一样是一个不错的选择,尽管
DockPanel
在windows phone上不可用。对于
网格
设置一些行,使底部元素位于底部行(您需要的位置)。它实际上可以是两行,一行用于“主要”内容,另一行用于页脚


对于
DockPanel
,使用
DockPanel.Dock=“bottom”
设置需要位于底部的元素,使用
DockPanel.Dock=“Top”
设置其余元素(按顺序)。您可能需要将
LastChildFill
属性设置为“False”以获得所需的外观。

您可以使用
网格来实现此目的:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="auto"/>
    </Grid.RowDefinitions>
    <StackPanel Grid.Row="0">
        ...
    </StackPanel>
    <TextBlock Grid.Row="1" Text="{Binding VersionNumber}" Padding="3" TextWrapping="Wrap" HorizontalAlignment="Center" FontSize="15"/>
</Grid>

...

网格包含两行。第二行的高度与其内容所需的高度相同,第一行的高度为剩余高度。visualstudiomagazine.com上有一篇很好的文章解释了这一点:

我认为Windows Phone上没有
DockPanel
。@venerik我不确定,我回答时标签也不一样:)。网格很可能是OP想要的方式。非常感谢Bradley和Venerik。我无法添加DockPanel。用网格修复了它。:)