我有一个Grid
作为根容器,定义了两列(只有一行)
第一列具有灵活的宽度,第二列具有300px的固定宽度
接下来,我在第二列中放置了一个ListBox
来水平和垂直拉伸,即填充整个第二列。
最后,我已经为ListBox
定义了一个项目模板,它是一个垂直导向的StackPanel
,其中一个DockPanel
和几个TextBlock
。
<!-- Data template for ListBox -->
<DataTemplate DataType="{x:Type entities:Track}">
<StackPanel Orientation="Vertical">
<DockPanel>
<TextBlock DockPanel.Dock="Left" Text="Now playing" />
<TextBlock DockPanel.Dock="Right" Text="Time remaining" />
</DockPanel>
<TextBlock Text="{Binding Artist}" />
<TextBlock Text="{Binding Title}" />
</StackPanel>
</DataTemplate>
...
<ListBox
Grid.Column="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" />
我有两个问题:
StackPanel
填充ListBox
的整个宽度?现在,它只需要足够的空间来容纳DockPanel
和TextBlock
内部。它不符合ListBox
或ListBoxItem
。DockPanel
填充StackPanel
的整个宽度,即其父级?现在发生的事情是,即使TextBlock
中StackPanel
的宽度超过DockPanel
的宽度,它也不会拉伸以匹配其宽度。 感谢您的帮助。
答案 0 :(得分:24)
您可以通过在ItemContainerStyle中设置ListBoxItem
来制作每个HorizontalContentAlignment
拉伸的内容
<ListBox ...>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>