所以在wpf xaml中你可以这样写:
<TextBlock Text="Light"/>
但是我看到有些人这样写:
<TextBlock>Light</TextBlock>
有什么区别吗?为什么我们可以用两种方式写作?是否有任何性能提升?可移植性?
谢谢!
答案 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个单词),请使用第一个选项。这个允许更好的可读性。对于较长的文本,第二个选项更适合。