WP7 - 将样式应用于ContentPresenter的内容

时间:2011-01-11 00:01:47

标签: silverlight windows-phone-7

ContentPresenter ItemTemplate内有ListBox TextBlock。我想将样式应用于它包含的任何<ContentPresenter Content="{Binding Content}" HorizontalAlignment="Stretch" Grid.Row="1" Margin="12,0,0,0" SizeChanged="OnContentPresenterSizeChanged"> <ContentPresenter.Resources> <Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource PhoneTextExtraLargeStyle}" /> </ContentPresenter.Resources> </ContentPresenter> 。我尝试了以下方法:

XamlParseException

但我得Unknown attribute TargetType on element Stylex:Type。 Intellisense不喜欢TargetType,它在TargetType="TextBlock" 的自动完成值中显示的唯一内容是控件本身的名称。所以我也试过了

StackPanel

这没有引起任何例外,但它不起作用。我究竟做错了什么?此外,TextBlocks通常在{{1}}范围内,这可能是个问题吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我不确定它是否适用于ContentPresenter,但是要将共同样式应用于所有子元素,您可以在容器中提供样式。

所以我建议你把样式放在包含ContentPresenter的元素资源中。

实施例

<Border>
    <Border.Resources>
        <ContentPresenter.Resources>
            <Style TargetType="{x:Type TextBlock}"
                   BasedOn="{StaticResource PhoneTextExtraLargeStyle}" />
        </ContentPresenter.Resources>
    </Border.Resources>
    <ContentPresenter Content="{Binding Content}"
                      HorizontalAlignment="Stretch"
                      Grid.Row="1"
                      Margin="12,0,0,0"
                      SizeChanged="OnContentPresenterSizeChanged"></ContentPresenter>
</Border>

答案 1 :(得分:-3)

您只需使用TargetType="TextBlock"代替。