Pregunta

Sé que podemos utilizar

VisualStateManager.GoToState(this,"SomeState1",true);

para entrar en SomeState1, pero ahora la forma de volver al estado de base, como ningún estado, el estado en el que el control se cargó en.

VisualStateManager.GoToState(this,"base",true); 

// OR

VisualStateManager.GoToState(this,"",true);

// OR

VisualStateManager.GoToState(this,null,true);

El problema es que si no existe tal forma de volver al estado inicial o base entonces voy a tener que crear siempre un primer estado y en el Goto contructor el primer estado en el inicio de ajuste.

Me dio encontrar ninguna documentación, por lo que estoy tratando todas las combinaciones, pero no encontré ninguna que trabaja ..

¿Fue útil?

Solución

Los controles por defecto definen un estado visual "normal" en el grupo CommonStates, que se volvió a desplazar el ratón, etc. Creo que tendrá que seguir el mismo patrón por lo que supongo que es un control personalizado?

Otros consejos

Normal! = Base.

Base es sólo estado inicial del control antes de aplicar cualquier estado visual (es decir, antes de la VSM está activo).

Si usted lee este artículo sobre la Blog Expresión hay una buena descripción que he levantado aquí:

  

... al editar su propia plantilla de   control o control de usuario, usted debe   definir un estado ‘por defecto’ en cada estado   grupo. Haga que el control de ir a las   estados ‘por defecto’ cuando se inicializa ,   y hacerlo con transiciones suprimidas   para que pase sin demora. Una vez   que está en el diagrama de estados, el control   está listo para transiciones de estado a   se producen por lo que ahora se puede implementar el   evento manipuladores que desencadenan la   transiciones dentro del diagrama de estados.

A partir de un breve vistazo al código fuente de VSM, parece que no hay manera de salir de la VSM y de nuevo a su estado base original ... así que sí, sí es necesario un estado "normal". : (

También pareció un poco molesto que el estado VSM no se puede quitar fácilmente, aunque la solución anterior hace tiene sentido. Tal vez van a solucionar este problema en el futuro.

Para hacer esto, usted tiene que primero definir su estado "base".

El acuerdo es, si se define un estado visual que no contiene un guión, a continuación, este estado de manera efectiva será igual al estado de "base" -. El que el control se cargó en

<VisualStateGroup x:Name="TheGroup">  
    <VisualState x:Name="SomeState1">
       <Storyboard>
         ...
       </Storyboard>
    </VisualState>

    <VisualState x:Name="BaseState" /> <!-- Note: the VisualState tag is empty -->
</VisualStateGroup>

A continuación, cambie a ese estado:

VisualStateManager.GoToState( this, "BaseState", true );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top