文本框中的文本与文本框外的文本有何区别

时间:2017-01-06 14:08:16

标签: wpf xaml wpf-controls

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

<TextBlock Text="Light"/>

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

<TextBlock>Light</TextBlock>

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

谢谢!

4 个答案:

答案 0 :(得分:1)

  

为什么我们可以用两种方式写作?

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

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

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

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

  

是否有任何性能提升?

没有。基本上只做两种不同的方法,即设置TextBlock的Text属性。

视图的XAML标记只是一个基于XML的长字符串,在构建应用程序时会将其编译为BAML。然后,WPF运行时解析BAML标记,并在运行应用程序时创建相应的UI元素并设置其属性。如何在标记中设置TextBlock的Text属性在运行时并不重要。

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

如果您使用的正常或静态(哈特编码)字符串与您的示例相同,则两者都相同。第一个是完整形式,第二个是镜头切割。否则,如果你想使用动态值,那么通过Binding首先获得最佳方式。如果你想使用像&#39;&amp;&#39;这样的特殊字符。然后第二个是最好的方式。

答案 3 :(得分:-1)

第一个选项是第二个选项的简短形式。如果您使用短文本(1-2个单词),请使用第一个选项。这个允许更好的可读性。对于较长的文本,第二个选项更适合。