【问题标题】:Make a TextBlock in a ScrollViewer Automatically Zoom to Fit使 ScrollViewer 中的 TextBlock 自动缩放以适应
【发布时间】:2012-07-19 17:21:49
【问题描述】:

我正在创建一个 Windows 8 Metro 应用程序。我在ScrollViewer 中有一个TextBlock。我想知道是否可以以编程方式更改 ScrollViewer 的 ZoomFactor 以使 TextBlock 自动适应屏幕的宽度。意思是,TextBlock 的最长行适合屏幕宽度(不换行)。

【问题讨论】:

    标签: c# .net xaml microsoft-metro


    【解决方案1】:

    通常,我发现 ViewBox 是缩放 xaml 内容以适应预定大小的最有用的方法。只需让您的 ScrollViewer 和 TextBlock 没有尺寸要求(并关闭换行),然后将 ScrollViewer 放在 Scale=Uniform (或根据您的需要可能是 UniformToFit)的 ViewBox 中。

    TextBlock 将使 ScrollViewer 的大小适合其内容,然后 ViewBox 将缩放 ScrollViewer 以完全适合其自己的控制范围。 (将 ViewBox 放在根网格内或作为页面的根控件应该会导致它填满整个屏幕。)

    【讨论】:

    • 感谢您的回答。好的。我设法以某种方式得到了我想要的东西。它工作正常。目前我有这个:ScrollViewer -> Viewbox -> TextBlock。但是,由于用户能够更改 ScrollViewerZoomFactor(通过 Ctrl+Scroll 或 Ctrl+),我想在更改 TextBlock 的内容时重新缩放 TextBlock 的内容.我该怎么做?
    • 对不起,我已经测试过了,ScrollViewer -> Viewbox -> TextBlock 不能满足我的需要。正如你所建议的,我使用了Viewbox -> ScrollViewer -> TextBlock,但它有问题。滚动条不显示,我不能用鼠标滚动。我正在使用Stretch="UniformToFill"
    • 对于您的第一个问题,我不确定我是否理解 - Windows XAML 中的 ScrollViewer 也支持缩放,您不应尝试实现自己的缩放。或者,如果您不希望这种行为,您可以禁用滚动查看器的缩放。至于ScrollViewer不滚动,一般我发现这个问题是因为ScrollViewer(或它里面的Viewbox)实际上比屏幕大。设置一些断点并检查Viewbox 的实际高度/宽度。有时我将控件包装在 Border 中,以便更轻松地查看其大小。
    • ViewBox控件改变ScrollViewer的大小;因此禁用它显示滚动条(只要内容大于内容,它就会显示滚动条)。我想要的是更改TextBlock 的字体大小以自动适应屏幕宽度。
    猜你喜欢
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 2018-03-09
    • 1970-01-01
    相关资源
    最近更新 更多