C# RTB现在显示所有内容
我有一个与flowDocument关联的wpf richtextbox。 假设流文档中的行数为1..60 richtextbox不够高,无法显示所有数字。 但这很好,因为我可以滚动鼠标滚轮。 问题在于,此过程滚动不够,如下图所示: 您可能会看到,这里它只到达第50行,而不是第60行。 这不是与其他元素重叠的问题 提前感谢您的帮助。 帕特里克 ---加--- 这是xamlC# RTB现在显示所有内容,c#,wpf,richtextbox,flowdocument,C#,Wpf,Richtextbox,Flowdocument,我有一个与flowDocument关联的wpf richtextbox。 假设流文档中的行数为1..60 richtextbox不够高,无法显示所有数字。 但这很好,因为我可以滚动鼠标滚轮。 问题在于,此过程滚动不够,如下图所示: 您可能会看到,这里它只到达第50行,而不是第60行。 这不是与其他元素重叠的问题 提前感谢您的帮助。 帕特里克 ---加--- 这是xaml <Grid Name="grdReport_RTF" Visibility="Hidden">
<Grid Name="grdReport_RTF" Visibility="Hidden">
<RichTextBox x:Name="rtbReport_RTF" Margin="10" BorderBrush="Gray" Background="White" Foreground="Black" IsEnabled="True" Padding="10" Style="{DynamicResource rtbStyleDocLocal}" />
</Grid>
而且
private FlowDocument AddLineToRtb(FlowDocument fdoc, string str, bool IsTitle, double lineHeight, double fontSize)
{
Paragraph par;
var run = new Run(str);
run.Foreground = Brushes.Black;
if (!IsTitle)
run.FontWeight = FontWeights.Normal;
else
run.FontWeight = FontWeights.Black;
run.FontSize = fontSize;
run.FontFamily = ffRtb;
par = new Paragraph() { LineHeight = lineHeight, FontSize = fontSize };
par.Inlines.Add(run);
Application.Current.Dispatcher.Invoke((Action)(() => fdoc.Blocks.Add(par)));
return fdoc;
}
--加3--
关于解决方案的更多线索:
如果通过向下滚动至最大值,读取文件包含数字1..60,则效果为:
[![enter code here][3]][3]
相反,如果我通过向下滚动到最大值来添加更多带有字母a…z的行,效果是:
[![enter code here][3]][3]
远远超过60岁!!!!但不是到z您确认它没有将RTB拉伸到可见区域之外吗?最简单的检查方法就是在RTB上设置
Height=“200”
,查看滚动的工作原理
事实上,在你的屏幕截图中,我想我确实看到了一个1px的浅灰色边框,但没有穿过底部——这表明控件的实际底部已经被推到了看不见的地方。如果只是为了测试而给它BorderBrush=“Red”
,效果会更容易确定
默认的XAML DWIM(实际上是“如果我想做错事,就按我的意思做”)布局可能是WPF中滚动问题的最常见原因 您是否确认它没有将RTB拉伸到可见区域之外?最简单的检查方法就是在RTB上设置
Height=“200”
,查看滚动的工作原理
事实上,在你的屏幕截图中,我想我确实看到了一个1px的浅灰色边框,但没有穿过底部——这表明控件的实际底部已经被推到了看不见的地方。如果只是为了测试而给它BorderBrush=“Red”
,效果会更容易确定
默认的XAML DWIM(实际上是“如果我想做错事,就按我的意思做”)布局可能是WPF中滚动问题的最常见原因 你能分享XAML吗?当然!请看我的地址。谢谢,对我来说滚动很好。滚动到第60行??等一下,我刚意识到我忘记了流程文档部分。如何填充文本?能否共享XAML?当然!请看我的地址。谢谢,对我来说滚动很好。滚动到第60行??等一下,我刚意识到我忘记了流程文档部分。你是如何填充文本的?
[![enter code here][3]][3]