Стиль TextWrapping в WPF 4 ContentPresenter не применяется к неявно генерируемому TextBlock - PullRequest
10 голосов
/ 19 октября 2010

Если я назначу фрагмент текста для свойства Content ContentPresenter, TextBlock генерирует элемент управления *1003* во время рендеринга для содержания этого текста.

Если ясоздайте стиль, который применяется к TextBlock свойствам и присвойте его этому ContentPresenter, который, кажется, не применяется к неявно сгенерированным TextBlock s.

<Style x:Key="SampleStyle">
  <Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
</Style>

<ContentPresenter Content="This is a Test piece of text." Style="{StaticResource SampleStyle}"/>

Есть ли способ применить этостиль успешно для автоматически сгенерированных TextBlock s, за исключением применения его ко всем TextBlock s (например, объявление стиля как TargetType="TextBlock" без Key)?

Ответы [ 2 ]

35 голосов
/ 19 октября 2010

Вы можете сделать это ...

<Window.Resources>
    <ResourceDictionary>
        <Style TargetType="{x:Type TextBlock}" x:Key="WrappingStyle">
            <Setter Property="TextWrapping" Value="Wrap"/>
        </Style>
    </ResourceDictionary>
</Window.Resources>

... тогда где вы определите свой ContentPresenter ...

<ContentPresenter Content="This text is going to wrap...">
            <ContentPresenter.Resources>
                <Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource WrappingStyle}"/>
            </ContentPresenter.Resources>
</ContentPresenter>

TargetType установлено, поскольку, как вы знаете, ContentPresenter не всегда будет содержать TextBlock.

6 голосов
/ 21 июля 2014

Если вы не используете стиль в другом месте, вы можете применить его непосредственно к предъявителю контента:

<ContentPresenter.Resources>
    <Style TargetType="{x:Type TextBlock}">
        <Setter Property="TextWrapping" Value="Wrap"/>
    </Style>
</ContentPresenter.Resources>
...