1

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

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

2 回答 2

0

在这种情况下 ScrollViewer 的 Content 是文本,因此如果您希望文本引起滚动,请在 ScrollViewer 上设置 CanContentScroll 属性...

<ScrollViewer Grid.Column="1" Margin="{TemplateBinding Padding}" x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" CanContentScroll="True" />
于 2013-10-17T22:19:34.873 回答
0

这一点:<Setter Property="TextWrapping" Value="Wrap"/>说:当你到达它时让这个文本框滚动到下一行。

这一点:<Setter Property="MaxLines" Value="1"/>说:我希望它最多有 1 行。

删除第一个,将导致新文本将旧文本向左推(您可以通过按左键多次到达它)。

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

你想达到什么目的?

于 2013-10-17T07:58:23.713 回答