2010-05-24 18 views
5

Tipo de pregunta rápida: ¿Es posible activar viewstate desde XAML? Solo he podido activar uno desde CS, usando el método VisualStateManager.GotoState(). Esto solucionaría algunos de mis problemas de MVVM si fuera posible.Estados WPF/Silverlight - ¿Activar desde XAML?

Gracias

Respuesta

7

Si está familiarizado con los comportamientos Blend, activadores y acciones hay una GoToStateAction que es una parte del espacio de nombres Microsoft.Expression.Interactivity.Core. Deberá hacer referencia a los conjuntos de interactividad que forman parte del Blend SDK.

Una vez que haya configurado las referencias, es tan fácil como especificar que GoToStateAction reaccione ante algún tipo de disparador ... todo en XAML. Aquí hay un ejemplo que dispara la acción fuera del evento cargado usando un EventTrigger:

<UserControl x:Class="SilverlightApplication1.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
    xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"> 
    <Grid x:Name="LayoutRoot"> 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="Loaded"> 
       <ic:GoToStateAction StateName="MyVisualState"/> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 
     ... 
    </Grid> 
</UserControl> 

Más información y tutorial sobre la acción específica GoToState here.

EDIT: Esta respuesta es específica de Silverlight, no estoy seguro si esto está disponible en WPF.

+0

Estoy usando Blend 4, ¿aún necesitaría el SDK de Blend 3? --- No. – Peanut

+0

Esto funcionó PERFECTAMENTE. ¡¡¡Muchas gracias!!! – Peanut

Cuestiones relacionadas