如何垂直制作空TextBox拉伸?

时间:2012-07-12 16:12:34

标签: c# wpf

我想制作一个水平排列项目的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属性,但这看起来很不愉快。

我错过了这个技巧吗?

1 个答案:

答案 0 :(得分:5)

您需要在ListBox上设置VerticalContentAlignment="Stretch"