2011-05-02 6 views
25

Je veux que mon TextBlock iDéE désactivé (grisées) mais quand je mets IsEnabled sur false rien ne se passe, il reste noir:Comment désactiver TextBlock?

<TextBlock Text="test" IsEnabled="False" /> 

Pourquoi?

J'ai également essayé d'utiliser Label mais sa taille est plus grande pour une raison quelconque, donc il va gâcher toute ma mise en page.

+8

L'étiquette a un rembourrage intégré de 5px. Utilisez

+3

En fait, c'était la réponse, utilisera des étiquettes à la place. – Poma

Répondre

44

Ce serait la bonne façon de le faire avec un TextBlock je pense:

<TextBlock Text="Lorem ipsum dolor sit"> 
    <TextBlock.Style> 
     <Style TargetType="{x:Type TextBlock}"> 
      <Style.Triggers> 
       <Trigger Property="IsEnabled" Value="False"> 
        <Setter Property="Foreground" 
          Value="{StaticResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 
2

Vous pouvez jouer avec Background et appliquer une SystemColor.
Voici un exemple pour vous aider à démarrer.

<TextBlock IsEnabled="True" 
     Background="{DynamicResource {x:Static SystemColors.ControlLightBrushKey}}" 
     Name="textBlock" 
     Text="TEST TextBlock" 
     Height="30" /> 

Votre autre option consiste à essayer la propriété IsReadOnly du TextBox.

3

J'ai joué un peu et trouvé que la moitié opacité donne le même que IsEnabled = RESULTAT « Faux ».

<TextBlock Text="test" Opacity="0.5" /> 

Avantage: s'adapte à toutes les couleurs de premier plan.