【发布时间】:2015-03-23 17:09:56
【问题描述】:
我有一个 Windows Phone 通用应用程序,它有一个 RichTextBlock 动态加载其内容。有时内容很短,有时太长而无法放入页面;因此,我希望RichTextBlock 能够动态扩展并让用户能够滚动查看整个内容。
我环顾四周(这里和其他地方)寻找实现这一目标的代码,但不是很成功。我得到的最接近的是以下不起作用的代码:
<ScrollViewer Width="Auto" Height="Auto" VerticalScrollBarVisibility="Visible" VerticalScrollMode="Enabled">
<RichTextBlock FontSize="20" Foreground="White" IsTextSelectionEnabled="False" Margin="12,0" ScrollViewer.VerticalScrollBarVisibility="Visible">
<Paragraph>
Place a very long text here.
</Paragraph>
</RichTextBlock>
</ScrollViewer>
感谢任何帮助。
【问题讨论】:
-
RichTextBlock不应该有Margin,请将ScrollViewer的Height修复为某个恒定值并尝试。此外,确保RichTextBlock可以虚拟地超出其父项的范围。只有这样,将其放入ScrollViewer才有意义。 -
为什么
RichTextBlock不应该有Margin? -
如果
RichTextBlock有边距,则表示它被限制在屏幕上的某些边界内。仅当RichTextBlock边距超出屏幕时,ScrollViewer 才有用。只有这样,您才能启用滚动操作。 -
是的,
ScrollViewer在其子内容离开屏幕时很有用,这与子页边距无关。边距是相对于父/容器而不是屏幕;因此,在我的示例中,RichTextBlock边距是与ScrollViewerContentPresenter边缘的距离,而不是ScrollViewer本身的距离。换句话说,RichTextBlock将在它有更多内容时继续扩展(它的Height是Auto)并将保持其与ContentPresenter的边距,而ContentPresenter也会扩展。
标签: c# xaml windows-phone win-universal-app