2013-06-18 61 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