带文本框的WPF列表框

时间:2012-02-16 03:05:37

标签: c# wpf listbox

我有一个带文本框的列表框

文本框在datatemplate中定义,结尾如此

    <TextBlock Grid.Row="4" Grid.Column="0" Text="Note"></TextBlock>
    <TextBox Height="Auto" Grid.Row="4" Grid.Column="1" 
        Text="{Binding PartData.Note}" AcceptsReturn="True" TextWrapping="Wrap" >
    </TextBox>
</Grid>

我希望当用户输入多行时文本框会展开,但它不会。行决定高度设置为*

2 个答案:

答案 0 :(得分:3)

我已经使用此代码尝试了您的示例,并且它可以正常工作(使用Shift-Enter在TextBox中启动新行)

<Window x:Class="TextBoxWrap.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ListBox Height="140" ItemsSource="{Binding}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="auto"/>
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>

                        <TextBlock Grid.Row="1" Grid.Column="0" Text="Note"/>
                        <TextBox Margin ="10, 0,0,0" Height="Auto" Grid.Row="1" Grid.Column="1" Text="{Binding Count}" 
                            AcceptsReturn="True" TextWrapping="Wrap" />
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>       
      </Grid>
</Window>

答案 1 :(得分:0)

您需要添加

VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"

到TextBox所以它占用了所有可用空间。