文本框';s滚动条在应该';t

本文关键字:文本 滚动条 | 更新日期: 2023-09-27 18:24:11

我创建了一个带有滚动条的文本框,该滚动条应始终处于启用状态(在WORDWRAP上!)当然,默认情况下,它只在需要时启用(文本长度>文本框的宽度)。

出于某种原因,在一个线性文本框上,滚动条看起来总是启用的(也在不需要的时候)。这不会发生在多行文本框上。

知道为什么吗?

这是代码:

<TextBox x:Name="_textBox" Visibility="Visible" xml:space="preserve"
             Background="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type UserControl}},Path=Background}"
             Foreground="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type UserControl}},Path=Foreground}"
             FontFamily="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type UserControl}},Path=FontFamily}"
             BorderBrush="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type UserControl}},Path=BorderBrush}"
             KeyUp="_textBox_KeyUp"
             PreviewTextInput="_textBox_PreviewTextInput"
             DataObject.Pasting="_textBox_Pasting"
             VerticalContentAlignment="Top"
             PreviewKeyDown="TextBox_OnPreviewKeyDown"
             TextWrapping="Wrap"
             ScrollViewer.VerticalScrollBarVisibility="Visible"
             />

文本框';s滚动条在应该';t

VerticalScrollBarVisibility设置为Visible将确保滚动条始终可见,即使内容没有超出界限。

相反,将其设置为Auto,这将改变行为,使滚动条仅在内容超出界限时可见。(文本太大,TextBox无法显示)

这里有一个非常简单的例子:

<TextBox Text="..."
         TextWrapping="Wrap"
         ScrollViewer.VerticalScrollBarVisibility="Auto"/>

默认情况下,VerticalScrollBarVisibility无论如何都设置为Auto,因此您可以完全删除这一行,因为不需要它。

TL;DR

移除ScrollViewer.VerticalScrollBarVisibility="Visible"