【发布时间】:2016-03-02 01:47:02
【问题描述】:
不确定这是错误还是什么,但我的文本框都不允许水平滚动。我尝试了各种方法来解决,但还没有一个赢家。具体来说,我希望能够选择文本并左右拖动以显示溢出。
我首先删除了针对 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
按照小樱的建议,我有:
<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>
但是还是不行……
【问题讨论】:
-
在原帖中添加了一个示例。
-
您上面的代码不是真正的 XAML 代码。
TextBox没有TextWrap属性。 -
错字,应该是
TextWrapping。 -
不能左右拖拽文字,但还是可以选择文字,对吧?
-
我可以选择文本,但不能左右拖动选择来查看溢出。我基本上想在没有水平滚动条的情况下通过拖动选定的文本来水平滚动。