C#WPF - ScrollViewer + TextBlock麻烦

jon*_*ers 19 .net c# wpf textblock scrollviewer

我有一个TextBlock内部的ScrollViewer,与拉伸到其窗口对准.我需要TextBlock表现如下:

  • 使用窗口调整大小,不使用滚动条
  • 当调整大小低于某个宽度时, 应该出现TextBlock保持a MinWidth和滚动条的需要
  • TextWrapping或者TextTrimming应该适当地工作

我该如何获得此功能?

我尝试了几种方法,包括绑定到ActualWidth&ActualHeight,但无法使其工作.

这不是那么困难,我错过了什么?

这是一个放在XamlPad中的代码示例(尚未设置MinWidth):

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
            <TextBlock TextWrapping="Wrap" Text="Some really long text that should probably wordwrap when you resize the window." />
    </ScrollViewer>
</Window>
Run Code Online (Sandbox Code Playgroud)

jon*_*ers 26

这有效:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ScrollViewer HorizontalScrollBarVisibility="Auto" 
                  VerticalScrollBarVisibility="Auto"
                  Name="Scroller">
        <TextBlock HorizontalAlignment="Stretch"
                   VerticalAlignment="Stretch"
                   MinWidth="100"
                   Width="{Binding ElementName=Scroller, Path=ViewportWidth}"
                   TextWrapping="Wrap"
                   Text="Some really long text that should probably wordwrap when you resize the window." />
    </ScrollViewer>
</Window>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!谢谢!谢谢!OMG我花了2个小时寻找解决方案,绑定到ViewportWidth就行了!真的非常感谢你. (6认同)
  • 我当然注意到在调整窗口大小时,在我的机器上(在我的具有复杂布局的完整应用程序中)似乎有点滞后,如果你想出一种方法来防止额外的布局传递——那就太好了。 (2认同)