WP7 - Применение стиля к содержимому ContentPresenter - PullRequest
0 голосов
/ 11 января 2011

У меня есть 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 Style.Intellisense не нравится x:Type, единственное, что он показывает в значениях автозаполнения для TargetType, - это имена самих элементов управления.Поэтому я также попробовал

TargetType="TextBlock" 

Это не вызвало никаких исключений, но не работает.Что я делаю неправильно?Кроме того, текстовые блоки обычно находятся в пределах StackPanel, может ли это быть проблемой?

Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 11 января 2011

Я не уверен, что он работает для 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>
0 голосов
/ 14 января 2011

Вы просто должны использовать TargetType="TextBlock" вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...