水平滚动条不会出现在TextBox上

时间:2014-08-14 21:28:27

标签: c# wpf xaml textbox

我有一个Grid,它在ScrollViewer中有一个TextBox:

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

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

enter image description here

2 个答案:

答案 0 :(得分:2)

查看TextBox的实现: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>

答案 1 :(得分:0)

在我看来TextBox元素没有完全显示。我敢打赌滚动条就在那里,如果没有重新调整当前窗口的大小或在主窗口中向下滚动,你就看不到它。