0

WPF アプリケーションには、テキスト ボックスがあります。に設定AcceptReturnしましtrue たが、ユーザーがEnterをクリックしたときにテキストボックスを大きくする必要があります。つまり、現在、ユーザーがエンター キーをクリックすると、カーソルが新しい行に移動しますが、テキスト ボックスは同じ高さのままで、上の行は非表示になります。コンテンツに応じて textboxHeight を動的に変更できますか?

ありがとう

PS:テキストボックスを使用する必要があるテキストエリアを使用できません

4

2 に答える 2

1

現在のサイズを維持し、垂直スクロールバーを使用することをお勧めします。ただし、本当にそれが必要な場合は、TextBox をグリッドに配置します。グリッド行の高さを自動に設定します。TextBox の Height を Auto に設定します。テキスト ボックスの VerticalAlignment を Stretch に設定します。以下のコードでは、スクロールバーの設定を残しました。必要に応じて変更できます。

     <Grid>
        <Grid.RowDefinitions>
           <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <TextBox Grid.Row="0" x:Name="scriptTextBox" Margin="10" Height="Auto" Width="Auto" FontFamily="Consolas, Courier New" 
                 HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"
                 MaxLines="9999" AcceptsReturn="True" AcceptsTab="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
                 Text="{Binding Path=Script, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                 />
     </Grid>
于 2012-08-07T17:28:46.783 に答える
0

テキストボックスを使用する必要があると言います。少なくともオーバーライドされた Textbox を使用できますか? これは私のテストではかなりうまくいきました:

public class AutoHeightTextbox : TextBox {

    protected override Size ArrangeOverride(Size arrangeBounds) {
        Size unboundSize = new Size(this.Width, double.PositiveInfinity);
        Size textSize = base.MeasureOverride(unboundSize);
        this.Height = textSize.Height;
        return base.ArrangeOverride(arrangeBounds);
    }

}
于 2012-08-07T17:49:09.510 に答える