不确定这是一个bug还是什么,但我的TextBox都不允许水平滚动。我已经尝试了各种方法来解决,但没有什么是胜利者。具体来说,我希望能够选择文本并向左/向右拖动以显示溢出。
我首先开始删除任何针对TextBox的样式。
然后我添加了一些属性,如HorizontalScrollBarVisibility=Visible, VerticalScrollBarVisibility=Disabled, AcceptsReturn=False, TextWrapping=NoWrap
...
到目前为止,添加上述任何属性都无效。
我是否遗失了一个属性,或者我需要为此添加一个事件处理程序?
修改
忘记提及,实际滚动条显示(水平),但它不允许您左/右拖动所选文本。我刚删除了一个以ScrollBar为目标的样式,但这似乎并没有妨碍。
修改2
简单示例:
<TextBox
Text="Lots of text to cause overflow"
HorizontalScrollBarVisibility="Visible"
VerticalScrollBarVisibility="Disabled"
AcceptsReturn="False"
TextWrapping="NoWrap"/>
编辑3
问题源于我用来定位ScrollViewer的样式,虽然我不确定原因:
<Style TargetType="{x:Type ScrollViewer}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ScrollViewer}">
<Grid>
<ScrollContentPresenter Grid.Column="0" />
<ScrollBar x:Name="PART_VerticalScrollBar" HorizontalAlignment="Right" Value="{TemplateBinding VerticalOffset}" Maximum="{TemplateBinding ScrollableHeight}" ViewportSize="{TemplateBinding ViewportHeight}" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" />
<ScrollBar x:Name="PART_HorizontalScrollBar" Orientation="Horizontal" VerticalAlignment="Bottom" Value="{TemplateBinding HorizontalOffset}" Maximum="{TemplateBinding ScrollableWidth}" ViewportSize="{TemplateBinding ViewportWidth}" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" />
<!--<Rectangle Grid.Row="1" Grid.Column="1" Fill="Red"/>-->
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
编辑4
根据Sakura的建议,我有:
<ControlTemplate TargetType="{x:Type ScrollViewer}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ScrollContentPresenter Grid.Row="0" Grid.Column="0"/>
<ScrollBar Grid.Row="0" Grid.Column="1" x:Name="PART_VerticalScrollBar" HorizontalAlignment="Right" Value="{TemplateBinding VerticalOffset}" Maximum="{TemplateBinding ScrollableHeight}" ViewportSize="{TemplateBinding ViewportHeight}" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" />
<ScrollBar Grid.Row="1" Grid.Column="0" x:Name="PART_HorizontalScrollBar" Orientation="Horizontal" VerticalAlignment="Bottom" Value="{TemplateBinding HorizontalOffset}" Maximum="{TemplateBinding ScrollableWidth}" ViewportSize="{TemplateBinding ViewportWidth}" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" />
</Grid>
</ControlTemplate>
但它还没有用......
答案 0 :(得分:1)
问题是为ScrollViewer
自动设置TextBox
样式。您可以通过样式更改<Grid>
到<Grid Background="Yellow">
来测试它。
您可以覆盖它,但不要将CanContentScroll="True"
设置为ScrollContentPresenter
。
变化:
<ScrollContentPresenter Grid.Row="0" Grid.Column="0"/>
要:
<ScrollContentPresenter CanContentScroll="True"/>