Edit:En la pregunta original hice algunas suposiciones erróneas sobre cómo funcionan los setters, así que lo modifiqué para ser más preciso y útil.¿Hay alguna manera de usar un creador de estilos para las propiedades de las propiedades?
He intentado hacer algunos elementos del menú más interesantes haciendo que los iconos aparezcan medio transparentes si el mouse no está sobre el elemento. Si el mouse entra, el ícono se debe animar para volverse completamente visible. Las animaciones funcionan, Storyboard.TargetProperty
permite el acceso directo a la propiedad opacidad del icono:
<Style x:Key="MenuItemMouseOverStyle" TargetType="MenuItem">
<Style.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Icon.Opacity">
<EasingDoubleKeyFrame KeyTime="0" Value="0.5"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Icon.Opacity">
<EasingDoubleKeyFrame KeyTime="0" Value="1"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0.5"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
Si intento utilizar un regulador para el icono de opacidad inicial del código no se compilará:
<Setter Property="Icon.Opacity" Value="0.5"/>
Editar: Setters no funcionan de la manera en que traté de usarlos, no se puede acceder a las propiedades de las propiedades (ver respuestas) The Lo único que puede hacer es especificar una clase de destino si el tipo de destino del estilo no se ha establecido, los siguientes estilos deben ser equivalentes:
<Style x:Key="Style1" TargetType="Image">
<Setter Property="Opacity" Value="0.5"/>
</Style>
<Style x:Key="Style2">
<Setter Property="Image.Opacity" Value="0.5"/>
</Style>
Así que mi pregunta es si hay una manera de hacer que esto funcione de alguna manera con un colocador.
(Mi solución alternativa actual es un guión gráfico de un solo fotograma clave que se activa con el evento Loaded
que funciona bastante bien)
Su solución propuesta funciona, pero es incluso más molesta que la única solución de fotograma clave porque el colocador debe tener la misma definición de estilo, ya que pertenece a las animaciones. Bueno, no esperaba ninguna buena solución porque todo el establecimiento y el negocio de los activadores son un poco restrictivos (por ejemplo, EventTriggers solo funciona con guiones gráficos y no simples configuradores) Gracias de todos modos. –
@HB: Sí, estoy de acuerdo, la solución que ya está utilizando es mejor, así que solo continúe usándola :) Si Recursos fuera un DP, podría haber agregado eso a su Estilo de Menú, pero como no es eso, vaya –
No lo hago entiendo bastante bien lo que quiere decir, ¿por qué los recursos deben ser un DP? Incrustar el estilo de imagen en el Estilo. Los recursos parecen funcionar ... –