2013-06-18 22 views
2
充滿

讓我們說,我有一個空的文本塊:閱讀C#的TextBlock Text屬性使用內聯

textblock1.Text = ""; 

那我只能把內聯內容在其與這兩個語句:

textblock1.Inlines.Add(new Run() { Text = "A. ", Foreground = Brushes.Red }); 
textblock1.Inlines.Add(new Run() { Text = responses.Current.Value, Foreground = Brushes.Black}); 

驚人東西是我可以在窗口中正確顯示內容,但Textblock的Text屬性保持爲空!這會導致問題,因爲我需要將此文本塊的值傳遞給其他文本塊。

另一件事我真的不知道是當我第二次調用我的函數時,textblock1.Text屬性正在更新正確!每次通話都會正確更新,但是第一次!我已經花了幾個小時,但我真的很困惑。此外,我可以在網站上看到:

Text屬性返回一個值(InlineCollection中所有Run元素的附加文本)。但是,返回的值不包含已應用於Run元素的任何格式。

我非常仔細地檢查了我的代碼並調試了一下,看看有沒有其他地方可以操縱這些屬性,但我還沒找到。如果任何人有任何想法,對我來說這件事變得毫無意義......

+0

何時以及如何在您的代碼中使用Text屬性的值?它是通過綁定還是直接訪問該屬性? –

+0

謝謝你的回答! 我也在稍後在我的代碼中使用它來將Textblock1的值添加到其他文本塊 textBlock2.Inlines.Add(new Run(){Text = TextBlock11.Text +「」,FontSize = 25,Foreground = couleurSerie}) ; 就是這樣! 我通過直接訪問我的代碼隱藏文件 – reddy

+1

您是否在View的代碼隱藏構造函數中執行此操作?如果是這樣的話,將它移動到窗口的Loaded事件中,即使是第一次也應該沒問題。 – Viv

回答

1

只是對我的評論闡述給予一定的意義,

MSDN Docs

加載需要的邏輯樹一個元素被包含在內是完整的

它可以幫助我們,因爲這裏的綁定有其他TextBlock元素的引用。綁定也取決於DataContext以及其他一些與特定的Binding相關的因素,但一般而言,它們會在UI加載後得到評估,這是有充分理由的。

因此,一旦UI加載導致一切正常工作,因爲Binding在該點處處於活動狀態,因此請設置源TextBlockText