2014-07-11 1 views
0

FlowDocumentScrollViewer을 사용하여 로그 출력을 내 응용 프로그램 창에 출력하고 다소 별난 공간 문제가 있습니다. 대부분의 공간은 정확하게 크기가 정해져 있지만 일부 영역에서는 일관되게 너무 많은 공간이 생깁니다. 올바르게 간격WPF FlowDocument 공간 크기가 일치하지 않습니다.

: "D 복사 E : \ 프로젝트"
표시되는 내용 : "D             복사             E : 프로젝트 \"

나는 여기 예제 위의 간격 문제를 반영하기 위해 여러 공백을 사용해야했지만 실제로 공백이 하나만 표시되고 크기가 잘못 표시됩니다. 이것은 내 FlowDocumentScrollViewer에서 메모장 ++와 같은 텍스트 편집기로 텍스트를 복사함으로써 쉽게 검증 할 수 있습니다. 여기 내 간단한 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); 
} 

이 같은 아무것도 보지 않으며, 키워드로 "공간"을 사용하는 모든 사람은 정말 라인의 높이를 의미하기 때문에 구글에 검색하는 것은 매우 어렵 적이 .. 어떤 도움을 주셔서 감사합니다.

답변

3

당신이 시도가 ...

LogBox.TextAlignment = TextAlignment.Left; 

및/또는

logParagraph.TextAlignment = TextAlignment.Left; 

owo를? 내가 볼 수 있듯이, 어떤 경우에는 블록이 줄의 텍스트를 양쪽 맞춤/늘리기 위해 자동 정렬을 사용하기 때문에 ~ 왜 그런지는 모르지만 일어나는 것처럼 보임 o

+0

와우. 나는 이것이 실제로 문제를 고쳤다 고 믿을 수 없다. 잃을 때 자동 포맷! – Darkhydro

1

메서드에 Run 개체를 추가하고 CharacterSpacing과 같은 속성을 수정 해보십시오. 다른 개체도 시도해 볼 수 있습니다. 죄송합니다. Visual Studio에 액세스 할 수 없으므로 실제로 시도 할 수 없습니다.

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

당신은 여기에 MS의 문서를 볼 수 있습니다 Run Class

관련 문제