2011-05-02 10 views
25

Voglio che i miei TextBlock guardare disabilitato (grigio), ma quando ho impostato IsEnabled proprietà su false non succede nulla, rimane nero:Come disabilitare TextBlock?

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

Perché?

Inoltre, ho provato a utilizzare Label ma la sua dimensione è maggiore per qualche motivo, quindi rovinerà tutto il mio layout.

+8

L'etichetta ha una imbottitura 5px incorporata. Usa

+3

In realtà quella era la risposta, useremo invece le etichette. – Poma

risposta

44

questo sarebbe il modo corretto di farlo con un TextBlock penso:

<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

È possibile giocare con Sfondo e applicare un Colore di sistema.
Ecco un esempio per iniziare.

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

L'altra opzione è provare la proprietà IsReadOnly del controllo TextBox.

3

ho giocato un po 'e ho scoperto che la metà di opacità sta dando lo stesso resultat come IsEnabled = "false".

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

Vantaggio: si adatta a tutti i colori di primo piano.