文本框内的文字和文本框外的文字有什么区别

What is the difference between text in a textbox and text outside the textbox

所以在wpf中xaml你可以这样写:

<TextBlock Text="Light"/>

但是我看到有些人是这样写的:

<TextBlock>Light</TextBlock>

有什么区别吗?为什么我们可以用两种方式来写呢?是否有任何性能提升?可移植性?

谢谢!

如果您像您的示例一样使用普通或静态(hart 编码)字符串,则两者都是相同的。第一个是完整的形式,第二个是镜头切入。否则,如果你想使用动态值,那么第一个最好的方法是通过绑定。如果你想使用像'&'这样的特殊字符,那么第二个是最好的方法。

我看到的最大区别是第一个选项允许您绑定到某些东西。您的文本可能来自不同的地方,例如另一个控件、视图模型等。

Why can we write in two ways?

可以将内容放入元素中,以便能够向 TextBlock 添加内联:

<TextBlock>
     <Run>Light</Run>
     <LineBreak />
     <Run FontWeight="Bold">Bold</Run>
 </TextBlock>

如果您只添加一个字符串作为 TextBlock 元素的内部文本 (<TextBlock>Light</TextBlock>),XAML 解析器将简单地将 TextBlock 的文本 属性 设置为此字符串而不是创建内联并将其添加到 TextBlock 的内联集合。

因此结果没有区别,两种语法都会将 TextBlock 的 Text 属性 设置为 Text。

Are there any performance gains?

没有。基本上这只是做同样事情的两种不同方式,即设置 TextBlock 的 Text 属性。

视图的 XAML 标记只是一个基于 XML 的长字符串,在您构建应用程序时会被编译到 BAML 中。然后 WPF 运行time 解析 BAML 令牌并创建相应的 UI 元素并在您 运行 应用程序时设置它们的属性。在 运行 时,如何在标记中设置 TextBlock 的文本 属性 并不重要。