2010-12-09 15 views
2

Je peux définir un style comme suit dans Silverlight 4:Silverlight: plusieurs valeurs pour TargetType?

<Style x:Name="Subtitle" TargetType="TextBlock"> 
     <Setter Property="Foreground" Value="#787878" /> 
     <Setter Property="FontWeight" Value="Light" /> 
    </Style> 

Cependant, je veux appliquer ces propriétés à un Run aussi bien. Puis-je avoir plusieurs valeurs pour le TargetType, ou d'une manière ou d'une autre ces styles se propagent-ils dans l'arbre?

Répondre

4

Normalement, vous pouvez créer un style qui cible une classe de base commune, puis créer des styles vides dérivés du style de base pour cibler les classes spécifiques. Cependant, dans le cas de TextBlock et Run, ils ne partagent pas une classe de base commune et en fait, puisque Run ne dérive pas de FrameworkElement, il n'a même pas de propriété Style.

Cependant, si vous demandez si un Run héritera des propriétés de premier plan/police de son TextBlock parent, alors oui, il le fera. Mais vous ne pourrez pas appliquer ce style à un Run indépendamment de son TextBlock.

Une autre option est de créer des ressources statiques pour votre brosse avant-plan et le poids font comme ceci:

<Grid 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

<Grid.Resources> 
    <FontWeight x:Key="SubtitleFontWeight">Light</FontWeight> 
    <SolidColorBrush x:Key="SubtitleForeground" Color="#787878" /> 
</Grid.Resources> 

    <TextBlock> 
    <Run Text="Hello " /> 
    <Run Text="World!" 
     Foreground="{StaticResource SubtitleForeground}" 
     FontWeight="{StaticResource SubtitleFontWeight}" /> 
    </TextBlock> 

</Grid> 
0

.. Non un style - un TargetType ...