【问题标题】:Fixing a listbox's size in WPF在 WPF 中修复列表框的大小
【发布时间】:2011-07-21 16:37:56
【问题描述】:

我有一个列表框,它位于用户控件内的网格​​内。该用户控件放置在可以调整大小的选项卡面板中。

列表框定义为:

<ListBox HorizontalAlignment="Left" Margin="12,42,12,12" Name="listBox1" VerticalAlignment="Top" >

只要我的列表框被填充,这很有效。当它没有被填充时,它是一个大约 4 像素宽/高的正方形。如果它没有装满,它会缩小以适应里面的任何东西。

这不是我想要的。我想要的是它始终保持我定义的边距。我的问题分为两部分:

1:为什么它的行为方式是这样的?

2:如何让它按照我想要的方式运行?

谢谢。

【问题讨论】:

  • 以下任何答案都能解决您的问题吗?如果是这样,您应该接受一个作为答案。

标签: wpf layout wpf-controls listbox


【解决方案1】:

由于您将其放置在 Grid 控件上,因此您应该按预期实际使用它并创建行和列并将您的 ListBox 放入正确的单元格中。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="42" />
        <RowDefinition />
        <RowDefinition Height="12" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="12" />
        <ColumnDefinition />
        <ColumnDefinition Width="12" />
    </Grid.ColumnDefinitions>

    <ListBox x:Name="listBox1"
             Grid.Row="1" Grid.Column="1">
    </ListBox>
</Grid>

【讨论】:

    【解决方案2】:

    它保持边距,但边距在列表框本身之外,因此仅更改列表框相对于其容器的位置。

    我不确定您希望它如何显示,但可以设置最小宽度/高度。

    <ListBox HorizontalAlignment="Left" Margin="12,42,12,12" 
       Name="listBox1" MinHeight="10" MinWidth="100" VerticalAlignment="Top" />
    

    或者只是删除对齐设置

    <ListBox Margin="12,42,12,12" Name="listBox1"  />
    

    如果你想让列表框填满它的容器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      相关资源
      最近更新 更多