C# 水平滚动条不显示';t出现在文本框中
我有一个网格,在ScrollViewer中有一个文本框:C# 水平滚动条不显示';t出现在文本框中,c#,wpf,xaml,textbox,C#,Wpf,Xaml,Textbox,我有一个网格,在ScrollViewer中有一个文本框: <Grid DockPanel.Dock="Top"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <ScrollViewer&g
<Grid DockPanel.Dock="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ScrollViewer>
<StackPanel Height="271" Width="258">
<Label FontSize="15" Margin="10"> Suggestions </Label>
<Expander x:Name="expander" Margin="10" />
</StackPanel>
</ScrollViewer>
<GridSplitter Grid.Column="0" Width="5" />
<ScrollViewer Grid.Column="1">
<TextBox x:Name="textBox" AcceptsReturn="True"
AcceptsTab="True" FontSize="15"
VerticalScrollBarVisibility="Visible"
HorizontalScrollBarVisibility="Visible"
TextWrapping="WrapWithOverflow" Language="en-US"
SpellCheck.IsEnabled="True"/>
</ScrollViewer>
</Grid>
建议
即使我将HorizontalScrollBarVisibility设置为Visible,水平滚动条也不可见,并且当我键入超出文本框宽度的文本时,我无法滚动:
我觉得TextBox元素没有完全显示出来。我敢打赌滚动条在那里,如果不重新调整当前窗口的大小或在主窗口中向下滚动,您就无法看到它。查看文本框的实现: 这似乎是正常的行为:当TextWrappWithOverflow为WrapWithOverflow时,水平滚动条不可见 基于此,显示TextBox水平滚动条的唯一可能方法是将TextWrapping设置为NoWrap 您希望通过外部ScrollViewer实现的解决方案(我认为)可能是:
<ScrollViewer Grid.Column="1" HorizontalScrollBarVisibility="Visible">
<TextBox x:Name="textBox" AcceptsReturn="True"
AcceptsTab="True" FontSize="15"
VerticalScrollBarVisibility="Hidden"
HorizontalScrollBarVisibility="Hidden"
TextWrapping="WrapWithOverflow" Language="en-US"
SpellCheck.IsEnabled="True"/>
</ScrollViewer>
如果文本正在换行,水平条会显示吗?这不是包装的定义吗?要消除对滚动条的需要。。。。“linebreak”算法说它不能打断你的“dddddddddddddddddd”文本序列…但它不会导致文本框的宽度改变…因此不会以这种方式进行水平滚动。。。你说的东西需要一个边界来滚动“嘿,我想要你的内容包装”,所以它说“好吧,酷,然后我将在我的边缘停止它,包装它,垂直推,因为你不希望它水平通过我的边缘”…然后你在另一个ScrollViewer中扑通一声(文本框模板中已经内置了一个)那个外滚动浏览者在说“呃,你想让我和这个家伙做什么?你已经告诉我的孩子去处理了。”对吗?我也会很惊讶你的GridSplitter能正常工作。要么放弃包装,要么接受包装。哦,@tgeo部分正确,它向下推包装,因为外部scrollviewer是多余的。