我有一个 TextBlock
其中可能包含很长的文本,所以我想为其添加一个垂直滚动条。我最初的尝试是包装一个 ScrollViewer
周围。这行得通,但问题是当我放大时,宽度也被放大了。我尝试像这样禁用水平滚动条:<ScrollViewer IsTabStop="True" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
但这并没有解决问题。我也尝试绑定(bind)宽度:Width="{Binding ElementName=Scroller, Path=ViewportWidth}"
它也没有帮助。
所以,我的问题是,如何在 TextBlock
中添加垂直滚动条但具有固定宽度和换行文本?里面?这是我的完整代码:
<ScrollViewer Grid.Row="1" IsTabStop="True" VerticalScrollBarVisibility="Auto">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Top" TextWrapping="Wrap" TextAlignment="Center"/>
</ScrollViewer>
最佳答案
这个答案有两个部分......首先是简单地使用 TextBox
:
<TextBox ScrollViewer.VerticalScrollBarVisibility="Visible" Text="Something really
really really really really really really really really long"
Style="{StaticResource TextBlockStyle}" />
第二部分是简单的
Style
TextBox
使它看起来像 TextBlock
:<Style x:Key="TextBlockStyle" TargetType="{x:Type TextBox}">
<Setter Property="Background" Value="{x:Null}" />
<Setter Property="BorderBrush" Value="{x:Null}" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Padding" Value="0" />
<Setter Property="IsReadOnly" Value="True" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="TextWrapping" Value="Wrap" />
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="{x:Null}" />
</Trigger>
</Style.Triggers>
</Style>
如果这些属性不适合您的情况,请随意删除它们。
关于wpf - 仅带有垂直滚动条的 TextBlock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18742641/