WPF FlowDocument空间大小不一致

时间:2014-07-11 01:12:00

标签: c# wpf spacing

我正在使用FlowDocumentScrollViewer将日志输出打印到我的应用程序窗口,并且我遇到了一些相当奇怪的间距问题。大多数空间的大小都是正确的,但在某些区域我会一直占据太大的空间。这是一个例子:

正确间隔:“d复制E:\ Projects”
显示的内容:“d复制E:\ Projects”

我不得不使用多个空格来反映上面的间距问题,但我保证它确实只是显示一个空格,大小不正确。通过将FlowDocumentScrollViewer中的文本复制到文本编辑器(如notepad ++)中,可以轻松验证这一点。这是我最简单的FlowDocumentScrollViewer

的打印代码
LogBox.Document = new FlowDocument();
LogBox.Document.Background = LogBox.Background;
LogBox.Document.Foreground = LogBox.Foreground;
LogBox.Document.Blocks.Add(logParagraph = new Paragraph());
logParagraph.Margin = new Thickness(0); //Tested making Margin 0, didn't help
logParagraph.FontFamily = font;
logParagraph.FontSize = defaultFontSize;

...

public void PrintLog(String s)
{
    logParagraph.Inlines.Add(s);
}

我从来没有见过这样的东西,在谷歌上搜索它是非常困难的,因为每个使用“间距”作为关键字的人真的意味着行高......任何帮助都是值得赞赏的。

2 个答案:

答案 0 :(得分:3)

你试过......

LogBox.TextAlignment = TextAlignment.Left;

和/或

logParagraph.TextAlignment = TextAlignment.Left;

OWO?因为我可以看到,在某些情况下,Block正在进行自动对齐以证明/拉伸行中的文本〜不知道为什么但似乎发生了; o

答案 1 :(得分:1)

您可以尝试在Run方法中添加PrintLog对象,并修改其属性,如CharacterSpacing,也可以尝试其他对象。抱歉,我目前无法访问Visual Studio,因此无法实际尝试。

public void PrintLog(String s)
{
     var run = new Run();
     // modify run properties here    
    logParagraph.Inlines.Add(run);
}

您可以在此处查看MS文档:Run Class