WPF RichTextBox не прокручивается после загрузки файла RTF - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь загрузить файл Rich Text Format (RTF) в WPF RichTextBox.Когда я выполняю загрузку, создается впечатление, что файл загружается в RichTextBox, но полоса прокрутки отображается без видимого ползунка для прокрутки загрузки.На полосе прокрутки не отображается нижняя стрелка, поэтому кажется, что нижняя полоса прокрутки находится ниже области отображения для RichTextBox.Это лишает пользователя возможности прокрутки вниз.Я полагаю, что либо отсутствует свойство XAML для RichTextBox, либо что-то не так с тем, как я загружаю файл 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);
      }
    }

1 Ответ

1 голос
/ 07 марта 2019

Дикая догадка - ваш RichTextBox находится внутри StackPanel.Панели стека не ограничивают своих дочерних элементов, вместо этого они имеют бесконечное внутреннее пространство и растут в соответствии со своим дочерним содержимым.Таким образом, ваше текстовое поле не ограничено, поэтому оно не считает необходимым показывать полосу прокрутки.

В данный момент не перед средой разработки, поэтому я не могу подтвердить это, но попробуйте взять ееиз StackPanel и посмотрите, что это делает.

...