WPF RichTextBox 在加载 RTF 文件后不滚动
WPF RichTextBox Not Scrolling After Loading RTF File
我正在尝试将富文本格式 (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);
}
}
大胆猜测 - 您的 RichTextBox
在 StackPanel
中。堆栈面板不限制它们的 children,相反它们具有无限的内部 space 并根据它们的 child 内容增长。所以你的文本框没有被约束,所以它认为它不需要显示滚动条。
目前不在开发环境前面,所以我无法确认这一点,但请尝试将其从 StackPanel
中取出,看看会发生什么。
我正在尝试将富文本格式 (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);
}
}
大胆猜测 - 您的 RichTextBox
在 StackPanel
中。堆栈面板不限制它们的 children,相反它们具有无限的内部 space 并根据它们的 child 内容增长。所以你的文本框没有被约束,所以它认为它不需要显示滚动条。
目前不在开发环境前面,所以我无法确认这一点,但请尝试将其从 StackPanel
中取出,看看会发生什么。