3

我想制作一个水平排列项目的 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 属性,但这似乎令人不快。

我错过了这个技巧吗?

4

1 回答 1

5

您需要VerticalContentAlignment="Stretch"在您的 ListBox 上进行设置。

于 2012-07-12T16:17:39.490 回答