带有文本框的WPF列表框

本文关键字:WPF 列表 文本 | 更新日期: 2023-09-27 18:24:41

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

文本框是在一个数据模板中定义的,其结尾类似于

    <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>

当用户输入多行时,我希望文本框展开,但没有。行定义高度设置为*

带有文本框的WPF列表框

我已经用这个代码尝试过你的示例,它很有效(使用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>

您需要添加

VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"

到TextBox,以便占用所有可用空间。