【问题标题】:WPF RichTextBox Not Scrolling After Loading RTF File加载 RTF 文件后 WPF RichTextBox 不滚动
【发布时间】:2019-03-07 16:10:11
【问题描述】:

我正在尝试将富文本格式 (RTF) 文件加载到 WPF RichTextBox 中。当我执行加载时,文件似乎正在加载到 RichTextBox 中,但滚动条显示时没有可见的滑块框来滚动下载。滚动条不显示底部箭头,因此它看起来滚动条的底部位于 RichTextBox 的显示区域下方。这可以防止用户向下滚动。我相信我要么缺少 RichTextBox 的 XAML 属性,要么我加载 RTF 文件的方式不正确。请帮忙。提前致谢。

   <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
         </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
         </Grid.RowDefinitions>

        <StackPanel Grid.Row="0" Grid.RowSpan="5" 
                    Grid.Column="0" Grid.ColumnSpan="3" 
                    VerticalAlignment="Stretch" HorizontalAlignment="Stretch">

            <RichTextBox x:Name="LicenseRichTextBox" Margin="10"
                    VerticalAlignment="Stretch" HorizontalAlignment="Stretch"                 

                  IsReadOnly="True"  VerticalScrollBarVisibility="Visible">
            </RichTextBox>
        </StackPanel>
             <StackPanel Grid.Row="6"  Grid.Column="1" Grid.ColumnSpan="3" Margin="65,20,0,0" >
                <Button  x:Name="CloseButton" HorizontalAlignment="Left"
                      Width="90" Margin="-10,0,0,0"
                     Click="CloseButton_Click">
                    <StackPanel Orientation="Horizontal">
                        <Image Source="{StaticResource CloseButtonImageKey}" 
                           Margin="5,0,0,0" Height="20" Width="20" />
                        <TextBlock Padding="5,0,0,0" VerticalAlignment="Center"><Run Text="Close"/></TextBlock>
                    </StackPanel>
                </Button>
            </StackPanel>    
    </Grid>



   public  void LoadRTF()
    {
      const string EULA_Dir = @"Resources\EULA\EUlA.RTF";
      string currentDir = AppDomain.CurrentDomain.BaseDirectory;
      string PathToEULA = currentDir + EULA_Dir;

      if (File.Exists(PathToEULA))
      {
         LicenseRichTextBox.Selection.Load(new FileStream(PathToEULA, FileMode.Open), DataFormats.Rtf);
      }
      else
      {
        MessageBox.Show("Unable to locate the following file " + PathToEULA);
      }
    }

【问题讨论】:

  • 你能显示截图吗?另外,单击富文本区域并通过方向键或鼠标滚动滚动 - 可以吗??

标签: c# wpf xaml richtextbox


【解决方案1】:

大胆猜测 - 您的 RichTextBox 在 StackPanel 内。堆栈面板不会限制他们的孩子,而是他们有无限的内部空间并根据他们的孩子内容成长。因此您的文本框没有受到限制,因此它认为不需要显示滚动条。

目前不在开发环境面前,所以我无法确认这一点,但尝试将其从 StackPanel 中取出,看看会发生什么。

【讨论】:

  • MarcE 你的目标是正确的。是的,这就是问题所在。当我从 中取出 RichTextBox 时,滚动条开始正常工作并且看起来正确。 RichTextBox 现在看起来和工作正常。我希望为将来的问题记住这一点。谢谢一百万。
猜你喜欢
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多