在WPF中修复列表框的大小

时间:2011-03-23 21:57:50

标签: wpf layout wpf-controls listbox

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

列表框定义为:

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

只要填充了我的列表框,这就很有效。当它没有填充时,它是一个大约4像素宽/高的正方形。如果它没有满,它会缩小以适应其中的任何内容。

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

1:为什么它的表现如此?

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

感谢。

2 个答案:

答案 0 :(得分:3)

由于您将其置于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>

答案 1 :(得分: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"  />

如果您希望列表框填充其容器。