我想制作一个水平排列项目的 ListBox。每个项目都应该是一个文本框,并且无论有多少文本,它都应该垂直填充列表框。如果您使用过 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 属性,但这似乎令人不快。
我错过了这个技巧吗?