C# XAML TextBox控件出现意外垂直灰线如何解决
排查与解决方法
问题根因
你看到的垂直灰线是TextBox默认控件模板中禁用状态的垂直滚动条:当TextBox的文本内容实际高度超过控件自身设置的48px高度时,即使未显式开启滚动条,默认模板中预留的垂直滚动条占位在只读禁用状态下会显示为灰色竖线。
排查步骤
- 临时修改TextBox的
Height属性为Auto,观察垂直灰线是否消失:如果消失即可确认是内容溢出导致的滚动条占位问题 - 检查绑定的
MessageLine文本长度、换行情况,确认是否存在文本高度超出48px固定高度的情况
解决方法
直接在TextBox的属性中添加附加属性ScrollViewer.VerticalScrollBarVisibility="Disabled"即可,该属性会直接隐藏垂直滚动条的所有占位元素,无需修改控件默认模板,修改后代码如下:
<TextBox Grid.Row="7" Grid.Column="2" TextWrapping="Wrap" Validation.ErrorTemplate="{x:Null}" Visibility="{Binding MessageLineVisible}" FocusVisualStyle="{x:Null}" IsReadOnly="True" BorderBrush="Transparent" BorderThickness="0" Height="48" Width="300" HorizontalAlignment="Left" VerticalAlignment="Center" ScrollViewer.VerticalScrollBarVisibility="Disabled"> <TextBox.Text> <Binding Path="MessageLine" ValidatesOnExceptions="True" UpdateSourceTrigger="PropertyChanged"/> </TextBox.Text> </TextBox>
如果修改后仍有异常,可以额外补充ScrollViewer.CanContentScroll="False"和Padding="0"属性,排除内边距和内容滚动逻辑带来的异常占位。
内容的提问来源于stack exchange,提问作者user2347380
相关产品推荐
相关产品推荐

