【问题标题】:UWP ListBox is not responding to changes in the HorizontalAlignmentUWP 列表框未响应 Horizo​​ntalAlignment 中的更改
【发布时间】:2021-02-09 00:23:17
【问题描述】:

在下面的 XAML 中:

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Button Grid.Row="0" Grid.Column="0" HorizontalAlignment="Center" Content="Button1"></Button>
        <ListBox Grid.Row="1" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center">
            <ListBoxItem>Item1</ListBoxItem>
            <ListBoxItem>Item2</ListBoxItem>
            <ListBoxItem>Item3</ListBoxItem>
        </ListBox>
    </Grid>

为什么 ListBox 占据了整个宽度,即使将 Horizo​​ntalAlignment 设置为 Center?

【问题讨论】:

    标签: xaml uwp listbox grid


    【解决方案1】:

    根据您提供的代码,您没有设置ListBoxWidth 属性。 Width 的默认值为Double.NaN。如果设置了父元素的Width,那么ListBox 的宽度将拉伸到其父元素的可用宽度。如果父元素的Widthauto,那么Listbox 只会占用所需的空间。

    在您的方案中,您将Grid 的高度除以两个ColumnDefinition 标记,分成两等份。因此,您的 ListBox 的宽度将等于 Row 1Column 0 中单元格的宽度。您可以尝试将Width 属性的值设置为第一个ColumnDefinitionauto,以查看ListBox 只会占用所需的宽度。

    如果你想在其父元素中居中ListBox,你可以设置ListBoxWidth。然后ListBox 将位于单元格的中心。

    例如:

    <ListBox Grid.Row="1" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" Width="200">
    

    如果要将ListBox的项放在中心,则需要设置ListBoxItemHorizontalAlignment属性。

    例如:

    <ListBoxItem HorizontalAlignment="Center">Item1</ListBoxItem>
    <ListBoxItem HorizontalAlignment="Center">Item2</ListBoxItem>
    <ListBoxItem HorizontalAlignment="Center">Item3</ListBoxItem>
    

    【讨论】:

    • 如果你的问题解决了,最好能把答案标记出来,让有同样问题的人快速找到解决办法。
    猜你喜欢
    • 1970-01-01
    • 2020-08-31
    • 2010-10-19
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多