首页 > 解决方案 > 列表框在 xaml 查看器中看起来与在程序窗口中不同

问题描述

我正在开发一个 WPF 应用程序,我遇到了以下问题,但直到现在都忽略了它。

我想在它上面显示一个列表框和一个标签。为此,我有以下 XAML 代码:

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <Label Grid.Column="1" Content="Packs" Margin="60, 65, 60, 0"/>
        <ListBox Grid.Column="1"  Height="200" Width="150"/>
    </Grid>

这在设计窗口中给出了以下输出 XAML 编辑器视图

您可以忽略左侧的按钮。如您所见,标签就在列表框的顶部。

现在,当我打开我的程序时,该窗口使列表框看起来像是在标签之上。

程序视图

我尝试了很多重新排列 XAML 代码以不同方式显示它,但这个问题保持不变,虽然我可以通过使用对设计器来说太大的值来绕过它,但它仍然困扰着我,我找不到解决方案。

另外请记住,我的程序不会调整大小,所以不要担心。

谢谢您的回答!

标签: c#wpfxamllistboxlabel

解决方案


您可以将标签和列表框放在另一个面板(StackPanel)中,并将该面板与外部网格对齐:

<Grid> 
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <StackPanel Grid.Column="1" 
                Width="150" 
                VerticalAlignment="Center" 
                HorizontalAlignment="Center">
        <Label Content="Packs"/>
        <ListBox Height="200"/>
    </StackPanel>
</Grid>

这样,即使调整窗口大小,两个元素都将位于中间列的中心。


推荐阅读