【问题标题】:TextBlock with a slider when text is too long in WPF当 WPF 中的文本太长时,带有滑块的 TextBlock
【发布时间】:2020-09-08 05:41:29
【问题描述】:

如标题。我想用水平和垂直滑块创建TextBlock,它会根据文本大小自动调整。 Google 只是向我展示了Slider 控件,这绝对不是我想要的。

任何线索我可以用什么来实现它?

编辑

感谢这里的一些乐于助人的人,我有这个:

        <ScrollViewer Grid.Column="1" Style="{StaticResource MaterialDesignScrollViewer}">
            <TextBlock ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" Text="{Binding Path=(SQLLog:LogDisplay.LogAdvanced)}" FontSize="12"/>
        </ScrollViewer>

出现垂直滚动条,水平不出现。即使文本不适合 TextBlock

【问题讨论】:

  • TextBlock 中删除ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" 并将其添加到您的ScrollViewer。如果您希望水平滚动成为可能,还可以将Width 的值应用于至少与ScrollViewers Width 一样大的TextBlock
  • 现在可以正常使用了。链接示例包含在 TextBlock 中。好吧,我相信问题已经解决了。感谢您的帮助。

标签: c# wpf textblock


【解决方案1】:

您可以使用ScrollViewer 及其HorizontalScrollBarVisiblityVerticalScrollBarVisibility 属性。用它包围你的TextBox

<ScrollViewer HorizontalScrollBarVisibility="Auto" 
              VerticalScrollBarVisibility="Auto"
              Height="100"
              Width="200">
    <TextBlock Text="{Binding MyFancyTextProperty}" 
               Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ScrollViewer}}, Path=Width}"
               TextWrapping="Wrap"/>
</ScrollViewer>

考虑将TextWrapping="Wrap" 添加到您的TextBlock,这样它的内容就不会显示在一行中。

如果您想随时显示滚动条,即使内容适合,请将其值设置为Visible

HorizontalScrollBarVisibility="Visible" 
VerticalScrollBarVisibility="Visible"

【讨论】:

  • 水平滚动不会出现,即使它设置为自动。我正在尝试找出问题所在。
  • 编辑您的问题并添加无效的代码,以便我们为您提供帮助。很难猜出你在做什么。如果让内容垂直滚动,通常不需要水平滚动条。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多