我想制作一个水平排列项目的ListBox。每个项目都应该是一个TextBox,它应该垂直填充列表框,无论文本有多少。如果您使用过Tweetdeck,我的目标是产生类似的效果。这就是我所拥有的:
<ListBox
Background ="DarkGray"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
ItemsSource="{Binding Path=Items}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<DockPanel IsItemsHost="True"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Gray" BorderThickness="2" CornerRadius="5" Margin="2,0,2,0">
<Grid Width="250">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBox
Grid.Row="0"
Grid.Column="0"
VerticalAlignment="Stretch"
Text="{Binding Path=Messages, Mode=OneWay}" />
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
TextBox固执地适合文本,而不是垂直拉伸。我试过为DockPanel切换网格,这没有帮助。我可以绑定TextBox的Height属性,但这看起来很不愉快。
我错过了这个技巧吗?
答案 0 :(得分:5)
您需要在ListBox上设置VerticalContentAlignment="Stretch"
。