按左/右箭头键时如何在Scrollviewer中自动滚动文本框?

时间:2016-07-27 06:46:23

标签: wpf scrollviewer horizontal-scrolling

我用scrolllerviewer包装文本框。问题是当有足够的文本水平滚动时,我们使用左/右箭头移动文本,光标移动到显示区域之外,但它不会自动滚动内容。

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <ScrollViewer Grid.Row="0" Grid.Column="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
            <TextBox x:Name="Text1" AcceptsReturn="True" MinWidth="150" MinHeight="150"/>
        </ScrollViewer>
    </Grid>

这里有专家吗?

1 个答案:

答案 0 :(得分:0)

请勿使用ScrollViewer包装TextBox。 TextBox已经滚动支持。

使用TextBox执行以下操作:

<TextBox x:Name="Text1" Grid.Row="1" AcceptsReturn="True" MinWidth="150" MinHeight="150" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible"
                 ScrollViewer.VerticalScrollBarVisibility="Auto"  
                 ScrollViewer.HorizontalScrollBarVisibility="Auto" />

这是一个显示差异的例子:

<Grid Width="100" Height="300">
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>

        <ScrollViewer Grid.Row="0" Grid.Column="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Margin="0,20,0,0">
            <TextBox x:Name="Text2" AcceptsReturn="True" MinWidth="150" MinHeight="150"/>
        </ScrollViewer>
        <TextBox x:Name="Text1" Grid.Row="1" AcceptsReturn="True" MinWidth="150" MinHeight="150" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible"
                 ScrollViewer.VerticalScrollBarVisibility="Auto"  
                 ScrollViewer.HorizontalScrollBarVisibility="Auto" />

    </Grid>

希望这有帮助!