我有一个节标题,其中包含两个要在XAML中显示的单词,带有一些带有fontsize和fontfamily的样式。我可以使用 TextBlock 或 ContentControl (通过将内容属性设置为标题文本)来实现此功能。
TextBlock 不是从控件派生的,因此与内容控件相比,TextBlock的目的是在XAML中为文本执行效果更好吗?
答案 0 :(得分:3)
您的TextBlock
就是这样,当您调用它时,TextBlock
作为框架元素只是一个对象。所以,当你写<TextBlock Text="Blah Blah Blah"/>
时,确切地说就是它。
当您使用ContentControl
时,您实际上正在调用一个模板化控件,该控件将在其树中为每个实例添加多个元素。所以你正在使用的例子;
<Style TargetType="ContentControl">
<Setter Property="Foreground" Value="#FF000000"/>
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Top"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<ContentPresenter
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Cursor="{TemplateBinding Cursor}"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
因此,答案的简短版本为“是”,TextBlock效果会更好,建议尽可能在ContentControl
或Label
等模板控件上使用。
希望这会有所帮助,欢呼。
答案 1 :(得分:2)
要直接回答您的问题 - 如果您的意图是仅始终呈现文本,是的,请仅使用TextBlock。正如其他人已经指出使用ContentControl / ContentPresenter并设置为字符串无论如何都会包装它,并且您不必要地增加了元素数+1。