Tengo una aplicación Silverlight 4 donde tengo algunos estados definidos en XAML y uso VisualStateManager.GoToState(this, "stateName", false)
que funciona como se esperaba.Cómo actualizar el estado actual con VisualStateManager
El problema, sin embargo, es que algunas de las propiedades del estado están vinculadas a la interfaz de usuario, por lo que el usuario puede personalizar cosas como el color. Es posible hacer esto cuando se encuentre en ese estado (digamos estado A). Los cambios no se reflejan hasta que cambie a otro estado y vuelva al estado A. El problema no es la vinculación de la UI con las propiedades subyacentes (tienen los valores esperados), sino que el estado debe actualizarse, o al menos esa es mi conclusión.
Al principio simplemente probé VisualStateManager.GoToState(this, "StateA", false)
pero descubrí que "if the control is already in the stateName state, GoToState takes no action returns true".
Luego trató sin éxito, a pesar de que en realidad no es una buena solución:
VisualStateManager.GoToState(this, "StateB", false);
VisualStateManager.GoToState(this, "StateA", false);
¿Alguien sabe cómo puedo forzar una actualización, o una solución?
ACTUALIZACIÓN: que logró conseguir que funcione con una combinación de la respuesta de abajo y usando el siguiente código cuando la propiedad de dependencia cambió. El Storyboard.Stop()
y el Storyboard.Begin()
parecían tener en cuenta el nuevo valor de las propiedades establecidas desde la interfaz de usuario.
if (VisualStateManager.GoToState(this, "StateA", false))
{
VisualState stateA = (VisualState)VisualStateGroup.States[0];
stateA.Storyboard.Stop();
stateA.Storyboard.Begin();
}