列表框在 xaml 查看器中看起来与在程序窗口中不同

Posted

技术标签:

【中文标题】列表框在 xaml 查看器中看起来与在程序窗口中不同【英文标题】:Listbox looks different in xaml viewer than in the program window 【发布时间】:2021-05-21 19:14:46 【问题描述】:

我正在开发 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 代码以不同方式显示它,但这个问题保持不变,虽然我可以通过使用对设计师来说太大的值来绕过它,但它仍然让我感到困扰,我不能'找不到解决办法。

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

感谢您的回答!

【问题讨论】:

首先,您的第一个屏幕截图很难看到标签。第二:为什么不将标签和列表框放在一个堆栈面板中? @greenjaed 您好,感谢您的回复。有没有办法找出为什么会如此奇怪地调整大小? 仅从您发布的代码无法判断;只是复制和粘贴不会产生您观察到的相同行为。显然,从您的屏幕截图中,您的布局不仅仅是一个三列网格。你需要发minimal, reproducible example. 【参考方案1】:

您可以将 Label 和 ListBox 放在另一个 Panel (StackPanel) 中,并在外部 Grid 中对齐该 Panel:

<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>

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

【讨论】:

以上是关于列表框在 xaml 查看器中看起来与在程序窗口中不同的主要内容,如果未能解决你的问题,请参考以下文章

NSToolbar 在 Leopard 和 Snow Leopard 中看起来不同

字典中不存在给定的键 - 错误和警告

在 3D 全屏应用程序上叠加

弹出框在 IPAD 模拟器中透明但在设备中不透明

列表框在运行时wpf不显示列表数据

更改另一个选择框值上的选择框在codeigniter中不起作用