2

假设我有一个空的 Textblock :

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 元素的任何格式。

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

4

1 回答 1

1

只是为了详细说明我的评论以赋予一些意义,

来自MSDN 文档

加载意味着包含元素的逻辑树是完整的

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

因此,一旦 UI 加载,就设置Text源的 'TextBlock会导致一切正常,因为Binding' 那时处于活动状态。

于 2013-06-18T14:14:35.550 回答