使ListBox填充父容器的宽度

时间:2011-01-28 16:04:58

标签: wpf listbox wpf-controls

我有一个带有列表框的DockPanel。 dockpanel成功填充整个窗口的宽度。现在,我希望Listbox填充整个DockPanel的宽度。

我尝试了很多东西......包括在它周围包裹网格并将列设置为*的宽度,将列表框的水平对齐设置为拉伸,以及其他许多内容。我似乎无法让这个愚蠢的列表框填满宽度。

此列表框具有ItemTemplate,但其中的所有内容都具有拉伸与自动宽度的水平对齐方式。每当您将ItemTemplate的宽度设置为静态时,列表框会适当调整大小。我只是无法让它填补父母。

感谢。

编辑:

感谢大家让我意识到这是我的错......结果证明这是风格标签中的一个混乱。

我现在将尝试删除此问题。

4 个答案:

答案 0 :(得分:4)

我敢打赌你的ListBox正在填充其父容器的宽度,但列表框中的ListBoxItems不会水平拉伸。尝试添加以下样式:

 <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
         <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> 
     </Style> 
 </ListBox.ItemContainerStyle> 

答案 1 :(得分:3)

默认情况下,ListBox应填充DockPanel。

我刚试过:

<DockPanel>
  <ListBox Background="Red" />
</DockPanel>

它完美无缺。如果没有您的代码片段,我们很难看到问题所在。

答案 2 :(得分:1)

答案 3 :(得分:0)

我必须从列表框中删除所有“对齐”属性才能使其正常工作。确保从列表框定义中删除了Horizo​​ntalAlignment和VerticalAlignment分配。一旦完成上述操作并将其包装在DockPanel中,如上面所建议的那样,我便能够使其工作。