我有一个带有列表框的DockPanel。 dockpanel成功填充整个窗口的宽度。现在,我希望Listbox填充整个DockPanel的宽度。
我尝试了很多东西......包括在它周围包裹网格并将列设置为*的宽度,将列表框的水平对齐设置为拉伸,以及其他许多内容。我似乎无法让这个愚蠢的列表框填满宽度。
此列表框具有ItemTemplate,但其中的所有内容都具有拉伸与自动宽度的水平对齐方式。每当您将ItemTemplate的宽度设置为静态时,列表框会适当调整大小。我只是无法让它填补父母。
感谢。
编辑:
感谢大家让我意识到这是我的错......结果证明这是风格标签中的一个混乱。
我现在将尝试删除此问题。
答案 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)
您还可以使用DockPanel.LastChildFill
属性:
http://msdn.microsoft.com/en-us/library/system.windows.controls.dockpanel.lastchildfill.aspx
答案 3 :(得分:0)
我必须从列表框中删除所有“对齐”属性才能使其正常工作。确保从列表框定义中删除了HorizontalAlignment和VerticalAlignment分配。一旦完成上述操作并将其包装在DockPanel中,如上面所建议的那样,我便能够使其工作。