2014-07-10 69 views
0

下面是示例代碼C#metro,爲什麼我不能在'段落'中兩次添加'運行'?

Run test_run = new Run(); 
test_run.Text = "TEST"; 

Paragraph test_paragraph = new Paragraph(); 

test_paragraph.Inlines.Add(test_run); 
test_paragraph.Inlines.Add(test_run); 

test.Blocks.Add(test_paragraph); // 'test' is a RichTextBlock 

此代碼看起來那麼簡單,似乎是正常的。(在我看來......)

但是,如果我運行此代碼,應用程序的原因一個錯誤。

我試圖找出原因,我發現下面的代碼導致錯誤

test_paragraph.Inlines.Add(test_run); 
test_paragraph.Inlines.Add(test_run); 

如果我註釋掉上面的線路之一,它工作正常,但如果我加上「運行」成一段「段落」不止一次,它會導致錯誤。

我沒有看到這段代碼中的任何問題,因爲'test_run'沒有被摺疊或刪除。

任何人都可以幫助我理解這種情況嗎?

在此先感謝。

+0

是它給人錯誤'指定的元素已經是另一個元素的邏輯子。先斷開它? –

+0

'元素已經是另一個元素的子元素。' – user3555952

+0

我看不到'先斷開它。'但看起來很相似。我該如何解決它..? – user3555952

回答

0

你要做

Run test_run = new Run(); 
test_run.Text = "TEST"; 

Paragraph test_paragraph = new Paragraph(); 

test_paragraph.Inlines.Add(test_run); 

test_run = new Run(); 
test_run.Text = "TEST"; 

test_paragraph.Inlines.Add(test_run); 

test.Blocks.Add(test_paragraph); 
+0

謝謝你的回答,但我已經知道如何解決這個問題,我只想知道,,,一種「解決方法」,使我的原代碼工作。而不用重新分配一個新的段落。 無論如何,謝謝! – user3555952

+0

@ user3555952:段落僅實例化一次。它的'Run'又被添加了。 –

相關問題