C#WPF - ScrollViewer + TextBlock麻烦

时间:2009-12-30 16:44:24

标签: c# .net wpf scrollviewer textblock

我在TextBlock内有一个ScrollViewer,与其窗口的拉伸对齐。我需要TextBlock表现如下:

  • 使用窗口调整大小,无滚动条
  • 当调整大小低于某个宽度时,TextBlock需要保留MinWidth并且应显示滚动条
  • TextWrappingTextTrimming应该正常运作

如何获得此功能?

我尝试了几种方法,包括绑定到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>

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:2)

没有更多细节,我能做的最好的事情就是提供标准的方法。基本上,在滚动查看器中托管您的元素(具有最小大小);当scrollviewer的大小调整得足够小,使得元素不能完全适合它时,它会自动显示滚动条。例如:

<ScrollViewer>
    <Button MinWidth="100" MinHeight="50"/>
</ScrollViewer>

答案 2 :(得分:0)

如果您的布局更复杂且无法绑定到ScrollViewer,那么答案https://stackoverflow.com/a/41281041/254109中的IgnoreWidthControl可能会有所帮助。