2010-12-17 17 views
14

Estoy tratando de establecer bloque por lo que su color de primer plano cambiará cada vez el cursor del ratón pasa sobre ella, y este es mi código:usando un disparador para fijar un primer plano bloque de texto en mouseover

<TextBlock Foreground="blue" Margin="18,234,5,-2" Grid.RowSpan="3"> 
    <Underline>Remove Message</Underline> 
    <TextBlock.Style> 
     <Style TargetType="TextBlock"> 
      <Style.Triggers> 
       <Trigger Property ="IsMouseOver" Value="True"> 
        <Setter Property= "Foreground" Value="Red"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 

Cuando tratar de cambiar la propiedad colocador a cualquier otra, por ejemplo FontSize="30", se produce el evento.

Respuesta

39

Eso se debe a las propiedades establecidas en un control de anulación del definido en el estilo, por lo que su primer plano = "blue" se modificar el que se establece en el estilo. Para solucionar esto, puede mover el primer plano = "azul" en el estilo y eliminarlo de las propiedades del control.

<TextBlock Margin="18,234,5,-2" Grid.RowSpan="3"> 
     <Underline>Remove Message</Underline> 
     <TextBlock.Style> 
      <Style TargetType="TextBlock"> 
       <Setter Property= "Foreground" Value="Blue"/> 
       <Style.Triggers> 
        <Trigger Property ="IsMouseOver" Value="True"> 
         <Setter Property= "Foreground" Value="Red"/> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </TextBlock.Style> 
</TextBlock> 
+0

gracias !!!!! –

+0

¿Cómo harías esto en Focus o en Pressed? ¿O son posibles en TextBlocks? – ClosDesign

+0

No tiene mucho sentido para un TextBlock que se desea enfocar o prensados. Para otros UiElements, como un botón, lo cual tiene sentido que se desea enfocar o prensados, de los oprimidos puede utilizar la propiedad IsPressed (en lugar de IsMouseOver). Para enfocarse, hay otras formas (ver FocusVisualStyle) –

Cuestiones relacionadas