Pregunta

Trato de establecer el color de fondo de un control cuando el ratón está sobre ella. Trato de hacerlo a través del gestor de estado visual. Yo era capaz de conseguir el siguiente código que se ejecuta:

<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Control.Background" Storyboard.TargetName="BorderBackground">
    <DiscreteObjectKeyFrame KeyTime="0">
        <DiscreteObjectKeyFrame.Value>
            <SolidColorBrush Color="#FF123456" />
        </DiscreteObjectKeyFrame.Value>
    </DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>

Pero no quiero para establecer el color de la plantilla, pero se unen a un valor del control. Lo he probado con el 'Tag'-propiedad de la siguiente manera:

<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Control.Background" Storyboard.TargetName="BorderBackground">
    <DiscreteObjectKeyFrame KeyTime="0">
        <DiscreteObjectKeyFrame.Value>
            <SolidColorBrush Color="{TemplateBinding Tag}" />
        </DiscreteObjectKeyFrame.Value>
    </DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>

y ajuste de la Etiqueta-Propiedades del control que está utilizando este estilo de '# FF123456'.

Sin embargo, esto no funciona. No me dejó un mensaje de error, simplemente no cambia el backgroundColor. Cualquiera sabe, lo que podría ser el problema?

Gracias de antemano,
Frank

¿Fue útil?

Solución

Por desgracia, la forma en que está tratando de hacer no va a funcionar en Silverlight. Las animaciones VisualStateManager no son parte del árbol de la pantalla, por lo que no se puede utilizar la unión. Usted tiene opciones, sin embargo, StaticResources (también conocido como estableciendo colores en el diccionario de recursos) y animaciones basadas en código son diferentes soluciones (dependiendo exactamente lo que quiere hacer). Para estos últimos la salida de un hilo donde hice una pregunta similar: ¿Cómo puedo animar una propiedad dinámica en un control de usuario de Silverlight 4?

Otros consejos

No se puede hacer de forma dinámica en un solo objetivo, pero lo que puede hacer es crear otro destino (por ejemplo llamada BorderBackgroundAlt) cuyo fondo se puede establecer de forma explícita a {} Tag TemplateBinding en su declaración.

A continuación, se puede tener BorderBackgroundAlt se derrumbó por defecto, y en su cuadro de animación en lugar de los colores de conmutación, interruptores de visibilidad, de modo que BorderBackground se derrumbó y BorderBackgroundAlt es visible.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top