windows - 如何填充页面并根据调整大小调整文本位置

标签 windows xaml uwp

我是 xaml 和 Windows 10 Gui 编程的新手。我想设计一个带有 TextBlock、ListBox 和 Button 的页面,所有这些都位于页面的中心。我希望 TextBlock 和按钮始终位于页面的顶部和底部,无论用户如何调整窗口大小。 ListBox 应该自动拉伸(stretch)以填充 TextBlock 和 ListBox 之间的间隙。我尝试将 VerticalAlignment 设置为不同的值,但它似乎没有做任何事情。

<Page
x:Class="FirstWin10.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:FirstWin10"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Orientation="Vertical">
    <TextBlock x:Name="textBlock" HorizontalAlignment="Center" Margin="10,20,10,0" TextWrapping="Wrap" VerticalAlignment="Top">
        <Run Text="Unkown Screen Name"/>
        <LineBreak/>
        <Run/>
    </TextBlock>
    <ListBox x:Name="listBox" HorizontalAlignment="Center" MinWidth="450" MinHeight="178" Margin="50,20,50,0" VerticalAlignment="Stretch">
        <StackPanel Orientation="Horizontal">
            <CheckBox />
            <TextBox Text="ListBox Item #1" />
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <CheckBox />
            <TextBlock>
                <Run Text="ListBox Item #2"/>
            </TextBlock>
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <CheckBox />
            <TextBlock>
                <Run Text="ListBox Item #3"/>
            </TextBlock>
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <CheckBox />
            <TextBlock>
                <Run Text="ListBox Item #4"/>
            </TextBlock>
        </StackPanel>
    </ListBox>
    <Button x:Name="button" Content="Button" HorizontalAlignment="Center" Margin="10,20,10,0" VerticalAlignment="Bottom"/>
</StackPanel>

最佳答案

考虑使用包含三行的Grid。第一行和最后一行自动拉伸(stretch)到 TextBlockButton 的大小;中间行占据其余空间。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <TextBlock Grid.Row="0" HorizontalAlignment="Center" /> <!-- Grid.Row="0" can be removed as it's the default -->
    <ListBox Grid.Row="1" HorizontalAlignment="Center" />
    <Button Grid.Row="2" HorizontalAlignment="Center" />
</Grid>

关于windows - 如何填充页面并根据调整大小调整文本位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32856342/

相关文章:

c++ - 为什么 EOF 字符放在行尾时不起作用?

c# - 如何删除仍在其他程序中打开的临时文件?

windows - 默默使用Microsoft XPS Document Writer打印机制作XPS

windows - 使用 Delphi 2007 从虚拟文件夹加载文件

xaml - DataBound 列表框中 ListPicker 的 DataContext 问题

xaml - 如何在 (Uno 2.4) 中使用 Microsoft.UI.Xaml.Controls 资源

c# - ViewModel 中 UIElements 的 UserControl 会破坏 MVVM?

c# - MVVM 和 Prism 中的超链接可见性

xaml - 在 UWP 应用程序中覆盖来自 Generic.xaml 的资源

c# - 通用 Windows 平台 (UWP) C# 应用程序 - 如何在应用程序中运行独立的 python