2009-05-01 11 views
5

El XAML a continuación no funciona (el texto no cambia al pasar el ratón por encima):La propiedad TextBlock Text no se puede configurar mediante el disparador de estilo si no está vacía, ¿por qué?

<Window.Resources> 
    <Style TargetType="TextBlock"> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="true"> 
       <Setter Property="Text" Value="hover"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 
<Grid> 
    <TextBlock Text="original"/> 
</Grid> 

Pero, si el atributo Falta texto:

<Grid> 
    <TextBlock/> 
</Grid> 

el texto no cambia el ratón por encima. ¿Alguien sabe la teoría detrás de esto?

Respuesta

6

Es un tema DependencyProperty precedencia, cuando en realidad se establece la propiedad como en:

<TextBlock Text="original"/> 

que tiene prioridad sobre el valor establecido en el gatillo.

ver

http://msdn.microsoft.com/en-us/library/ms743230.aspx

+0

Este es un gran enlace. Explica un _lot_ de lo que pensé que eran mis errores y simplemente tomó diferentes enfoques. –

+0

Aún así podrían diseñarlo, mientras que los setters de estilo son amantes de los valores locales, los styletriggers_ serían más altos ... Debido a que las animaciones y los desencadenadores de datos pueden anular fácilmente el valor local, el trigger de estilo dinámico también podría caer en esa categoría. –

Cuestiones relacionadas