Wpf 当文本过长时,自定义模板文本框不会滚动到新字符

Wpf 当文本过长时,自定义模板文本框不会滚动到新字符,wpf,xaml,Wpf,Xaml,我使用以下文本框样式。如果我一直在文本框中输入,如果文本变得太长,它将不会滚动到插入符号。而且我也不能拖动来滚动文本。我错过什么了吗 <Style x:Key="TextBoxStyle" TargetType="{x:Type TextBox}"> <Setter Property="Foreground" Value="White"/> <Setter Property="Background" Value="{StaticResource Te

我使用以下文本框样式。如果我一直在文本框中输入,如果文本变得太长,它将不会滚动到插入符号。而且我也不能拖动来滚动文本。我错过什么了吗

<Style x:Key="TextBoxStyle" TargetType="{x:Type TextBox}">
    <Setter Property="Foreground" Value="White"/>
    <Setter Property="Background" Value="{StaticResource TextBoxBackgroundBrush}"/>
    <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorderBrush}"/>
    <Setter Property="BorderThickness" Value="2"/>
    <Setter Property="FontSize" Value="26"/>
    <Setter Property="TextWrapping" Value="Wrap"/>
    <Setter Property="MaxLines" Value="1"/>
    <Setter Property="Padding" Value="5"/>
    <Setter Property="SnapsToDevicePixels" Value="True"/>
    <Setter Property="Height" Value="50"/>
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TextBox}">
                <Grid>
                    <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" 
                     Background="{TemplateBinding Background}" CornerRadius="2" SnapsToDevicePixels="true">
                        <Border.Effect>
                            <DropShadowEffect Direction="-90" ShadowDepth="2"/>
                        </Border.Effect>
                    </Border>
                    <Border BorderBrush="{TemplateBinding BorderBrush}" x:Name="GlowBd" BorderThickness="2" CornerRadius="2" SnapsToDevicePixels="true">
                        <Border.Effect>
                            <DropShadowEffect Direction="360" BlurRadius="6" ShadowDepth="0"/>
                        </Border.Effect>
                    </Border>
                    <Grid Margin="2">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="auto"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <ContentControl Content="{TemplateBinding Tag}"/>
                        <ScrollViewer Grid.Column="1" Margin="{TemplateBinding Padding}" x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                    </Grid>
                </Grid>
                <!-- Some triggers -->
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

此位:
表示:当您到达此文本框时,让其滚动到下一行

此位:
表示:我希望它最多有一行

删除第一个,将导致新文本向左推旧文本(您可以通过按左键足够的次数来达到)

删除第二个,将导致新文本向上推旧文本(您可以通过按向上键来访问它)


您想实现什么?

在本例中,ScrollViewer的内容是文本,因此如果您希望文本导致滚动,请在ScrollViewer上设置CanContentScroll属性

<ScrollViewer Grid.Column="1" Margin="{TemplateBinding Padding}" x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" CanContentScroll="True" />

您是否能够通过其他方式(滚动条、滚轮等)到达字符串末尾?