我有一个Grid,它在ScrollViewer中有一个TextBox:
<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宽度的文本时,我无法滚动:
答案 0 :(得分:2)
查看TextBox的实现:http://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/Controls/TextBox.cs#1473
似乎这是正常行为:当TextWrapping为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>
答案 1 :(得分:0)
在我看来TextBox元素没有完全显示。我敢打赌滚动条就在那里,如果没有重新调整当前窗口的大小或在主窗口中向下滚动,你就看不到它。