3

在我的 Windows Phone 应用程序中,我使用的是

    <ScrollViewer Margin="0,0,0,0"  VerticalAlignment="Top">
        <StackPanel Margin="0,0,0,0" Width="Auto"  >
            <RichTextBox x:Name="Browser" Foreground="Black" Height="Auto" cxi:WebBrowserHelper.Html="{Binding BrowserHtml}" Background="Transparent" HorizontalAlignment="Left" VerticalAlignment="Top"  Width="460" Margin="0,0,0,0" AcceptsReturn="True" VerticalScrollBarVisibility="Visible" />
        </StackPanel>
    </ScrollViewer>

但并非所有文本都显示。我该如何解决这个问题?

在此处输入图像描述 在此处输入图像描述

更新1

在我输入高度 = 700 之后:(见第二张图片)

更新2

    <StackPanel Margin="0,0,0,0" Width="480" Orientation="Vertical">
        <ScrollViewer Margin="0,0,0,0"  VerticalAlignment="Top" Height="1000" >
            <StackPanel Margin="0,0,0,0" Width="Auto"  >
                <RichTextBox x:Name="Browser" Foreground="Black" Height="1000" cxi:WebBrowserHelper.Html="{Binding BrowserHtml}" Background="Transparent" HorizontalAlignment="Left"   Width="460" Margin="0,0,0,0" AcceptsReturn="True" VerticalScrollBarVisibility="Visible" />
            </StackPanel>
        </ScrollViewer>
    </StackPanel>
4

3 回答 3

2

问题不是 RichTextBox,它是由您使用 StackPanels 引起的。下面的示例使用简单的矩形重现问题/解决方案。

垂直方向的 StackPanel 扩展到内容的大小。这意味着其中的 ScrollViewer 无法正确拉伸以适应。要使 ScrollViewer 工作,它必须是固定大小。

出于同样的原因,这个简单的示例不起作用:

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <StackPanel Margin="0,0,0,0" Width="480" Orientation="Vertical">
            <ScrollViewer Margin="0,0,0,0"  VerticalAlignment="Stretch">
                  <StackPanel Margin="0,0,0,0" Width="Auto"  >
                       <Rectangle Fill="Aqua" Height="200"/>
                       <Rectangle Fill="Red" Height="200"/>
                       <Rectangle Fill="Yellow" Height="200"/>
                       <Rectangle Fill="Blue" Height="200"/>
                       <Rectangle Fill="Green" Height="200"/>
                  </StackPanel>
             </ScrollViewer>
         </StackPanel>
    </Grid>

这有效(ScrollViewer 外没有堆栈面板):

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <ScrollViewer Margin="0,0,0,0"  VerticalAlignment="Stretch" >
             <StackPanel Margin="0,0,0,0" Width="Auto"  >
                  <Rectangle Fill="Aqua" Height="200"/>
                  <Rectangle Fill="Red" Height="200"/>
                  <Rectangle Fill="Yellow" Height="200"/>
                  <Rectangle Fill="Blue" Height="200"/>
                  <Rectangle Fill="Green" Height="200"/>
             </StackPanel>
         </ScrollViewer>
    </Grid>
于 2012-05-09T13:06:16.303 回答
1

您必须在 RichTextBox 中设置 height="auto"。以下代码适用于我:

 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <ScrollViewer Margin="0,0,0,0"  VerticalAlignment="Stretch" >
            <RichTextBox ScrollViewer.VerticalScrollBarVisibility="Visible"  Name="richTextBox" Style="{StaticResource RichTextBoxStyle1}" Height="auto"/>
            </ScrollViewer>
        </Grid>
于 2013-07-01T07:09:41.377 回答
0

使用 ScrollViewer 时,您必须指定它的高度元素(固定或动态,如网格)。否则它会根据内容占用所有高度,即使它超出了屏幕。所以试试这样的 'ScrollViewer Height="700"....'

于 2012-05-09T13:03:38.123 回答