TextBox 上不出现水平滚动条

Ram*_*uri 1 c# wpf xaml textbox

我有一个网格,其中有一个 ScrollViewer 内的文本框:

    <Grid DockPanel.Dock="Top">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <ScrollViewer>
            <StackPanel Height="271" Width="258">
                <Label FontSize="15" Margin="10"> Suggestions </Label>
                <Expander x:Name="expander" Margin="10" />
            </StackPanel>
        </ScrollViewer>
        <GridSplitter Grid.Column="0" Width="5" />
        <ScrollViewer Grid.Column="1">
            <TextBox x:Name="textBox" AcceptsReturn="True"
                AcceptsTab="True" FontSize="15"
                VerticalScrollBarVisibility="Visible" 
                HorizontalScrollBarVisibility="Visible"
                TextWrapping="WrapWithOverflow" Language="en-US"
                SpellCheck.IsEnabled="True"/>
        </ScrollViewer>
    </Grid>
Run Code Online (Sandbox Code Playgroud)

即使我将 Horizo​​ntalScrollBarVisibility 设置为 Visible,水平滚动条也不可见,并且当我键入一些超出 TextBox 宽度的文本时,我无法滚动:

在此输入图像描述

And*_*ana 5

查看文本框的实现:http://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/Controls/TextBox.cs#1473

似乎这是正常行为:当 TextWrapping 为 WrapWithOverflow 时,水平滚动条不可见。

基于此,显示 TextBox 水平滚动条的唯一可能方法是将 TextWrapping 设置为 NoWrap。

您希望使用外部 ScrollViewer 实现的目标(我认为)的解决方法可能是:

<ScrollViewer Grid.Column="1" HorizontalScrollBarVisibility="Visible">
    <TextBox x:Name="textBox" AcceptsReturn="True"
        AcceptsTab="True" FontSize="15"
        VerticalScrollBarVisibility="Hidden" 
        HorizontalScrollBarVisibility="Hidden"
        TextWrapping="WrapWithOverflow" Language="en-US"
        SpellCheck.IsEnabled="True"/>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)