2011-11-12 3 views
2

RichTextBox가 있고 단락을 선택한 XAML 다음에 해당하는 C# 코드는 무엇이며이 단락의 공백을 활성화/비활성화하려고합니다. XAML에서 활성화하는 방법을 알고 있지만 코드에서이 작업을 수행해야합니다.공백을 보존하기 위해 XAML에 해당하는 코드는 무엇입니까?

<Paragraph xml:space=\"preserve\">  Tabbed Code</Paragraph> 

나는

void EnableWhiteSpace(Paragraph p, bool enable = true){ 
    if(enable){ 
     System.Windows.Markup.XmlAttributeProperties 
       .SetXmlSpace(this.Document, "preserve"); 
    } 
    else{ 
     System.Windows.Markup.XmlAttributeProperties 
       .SetXmlSpace(this.Document, "default"); 
    } 
} 

가 여전히 작동하지 않는, 동등한이 발견하고 여기에 한한다! 나는 탭을 얻지 못한다 !! ...

나의 문제는 코드를 편집하는 데 사용되는 RichTextBox와 구문 강조를 사용하는 것이다. 다음 코드를 호출 할 때를 제외하고는 모든 것이 괜찮습니다.

TextRange tr = new TextRange(
         myRichTextBox.Document.ContentStart, 
         myRichTextBox.Document.ContentEnd); 
string text = tr.Text; 

텍스트는 탭이 없으므로 텍스트 범위를 지정하기 전에 모든 단락의 공백을 활성화하면 탭이 표시 될 수 있습니다.

UPDATE

내가 단락에있는 모든 인라인 (실행)을 탐색하는 시도는, 아무도 탭을 포함하지, 난 그냥 모든 탭 :(

답변

0

RichTextBox는 버그가 있으며 모든 탭을 무시하지만 복잡한 문제 해결 방법을 사용하지 않고도 WPF 자체의 문제는 해결할 수 없습니다.

Alernative 노드가 직접 온라인 또는 태그 정보를 제공하지 않는 그러나 이것은 매우 복잡, 텍스트 변환기에 자신의 FlowDocument를 작성하는 것입니다.

3

를 잃어버린하고하는 것은 동등한 없습니다. XML 옵션 xml:space="preserve"에만 유효합니다 . , 그리고 반군 XML 파일이 존재하지 않기 때문에 C#에서 의미가 없습니다 (XML의 일종이다 귀하의 경우, XAML에서) XML 파일을 해석하여 XAML 코드의

는 C#과 동등한 다음과 같다 :

Paragraph p = new Paragraph(); 
p.Inlines.Add(new Run("  Tabbed Code")); 
+0

그럼 내가하여 RichTextBox가 있고 내가 그 안에 텍스트를 편집 할 때 내가 "AllowTabs"속성을 사용할 수 있고, 내가 (전체 일에 대한) TextRange는 .text를 가져 오지, 내가 탭이 표시되지 않는, 새로운 라인은 잘하지만 나는 들여 쓰기되지 않은 참조 본문. –

+0

@Akash :'xml : space'는 XAML 파일을 해석하는 동안에 만 의미가 있습니다. 그래서 당신의 문제는 다른 곳에 있습니다. – Vlad

+0

내 업데이트를 읽으십시오. 기본적으로 RichTextBox에서 문서를 편집 한 후에 탭을 잃어 가고 있습니다. –

관련 문제