2010-10-19 22 views
8

Si je cède un morceau de texte à la propriété Content d'un ContentPresenter, un contrôle TextBlock est généré par le ContentPresenter au moment du rendu pour contenir ce texte.WPF 4 le style ContentPresenter TextWrapping est pas appliquée à implicitedly généré TextBlock

Si je crée un style qui s'applique aux propriétés TextBlock et l'affecte à ContentPresenter, cela ne semble pas s'appliquer aux TextBlock s implicitement générés.

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

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

Y at-il un moyen d'appliquer ce style avec succès au autogenerated TextBlock s court de l'appliquer à tous les TextBlock s (par exemple le style déclarant comme TargetType="TextBlock" sans Key)?

Répondre

32

Vous pouvez le faire ...

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

... alors où vous définissez votre ContentPresenter ...

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

Le TargetType est défini comme vous le savez depuis le ContentPresenter ne sera pas toujours maintenez un TextBlock dedans.

+0

Merci MCH – Sayka

5

Si vous n'utilisez pas le style ailleurs, vous pouvez l'appliquer directement au présentateur du contenu:

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