TextBlock在XAML中的性能与ContentControl相同

时间:2014-05-01 14:27:22

标签: wpf silverlight xaml windows-8.1

我有一个节标题,其中包含两个要在XAML中显示的单词,带有一些带有fontsize和fontfamily的样式。我可以使用 TextBlock ContentControl (通过将内容属性设置为标题文本)来实现此功能。

TextBlock 不是从控件派生的,因此与内容控件相比,TextBlock的目的是在XAML中为文本执行效果更好吗?

2 个答案:

答案 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效果会更好,建议尽可能在ContentControlLabel等模板控件上使用。

希望这会有所帮助,欢呼。

答案 1 :(得分:2)

要直接回答您的问题 - 如果您的意图是仅始终呈现文本,是的,请仅使用TextBlock。正如其他人已经指出使用ContentControl / ContentPresenter并设置为字符串无论如何都会包装它,并且您不必要地增加了元素数+1。