读取使用Inlines填充的C#Textblock Text属性

时间:2013-06-18 13:21:43

标签: c# wpf textblock inlines

我们说我有一个空文本块:

textblock1.Text = "";

然后我只用这两个语句把Inlines内容放在其中:

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

令人惊奇的是,我可以在窗口中正确显示内容,但Textblock的Text属性一直是空的!这会导致问题,因为我需要将此Textblock的值传递给其他Textblock。

我真的无法弄清楚的另一件事是,当我第二次调用我的函数时,textblock1.Text属性正在正确更新!每次通话都会正确更新,但第一次!我在msdn上花了好几个小时,但我真的很困惑。此外,我可以在网站上看到:

  

Text属性返回一个值(InlineCollection中所有Run元素的附加文本)。但是,返回的值不包括已应用于Run元素的任何格式。

我非常仔细地检查了我的代码并进行了调试,看看是否有其他地方我操纵这些属性,但我还没找到。如果有人有任何想法,对我来说这件事变得毫无意义......

1 个答案:

答案 0 :(得分:1)

只是详细说明我的意见,以提供一些意义,

来自MSDN Docs

  

加载需要包含元素的逻辑树是完整的

这对我们有所帮助,因为这里的绑定引用了另一个TextBlock元素。绑定还取决于DataContext以及与特定Binding相关的其他一些因素,但通常它们会在UI加载后得到充分的原因进行评估。

因此,一旦用户界面加载,就会设置来源Text TextBlock导致所有内容正常运行,因为此时Binding处于有效状态。