2010-05-24 5 views
5

Eine kurze Frage: Ist es möglich, einen Viewstate von XAML zu aktivieren? Ich konnte nur eine aus CS mit der VisualStateManager.GotoState() -Methode aktivieren. Dies würde einige meiner MVVM-Probleme beheben, wenn es leicht möglich wäre.WPF/Silverlight States - Aktivieren von XAML?

Dank

Antwort

7

Wenn Sie mit Blend-Verhalten, Trigger vertraut sind, und Aktionen gibt es eine GoToStateAction, die ein Teil des Microsoft.Expression.Interactivity.Core Namespace ist. Sie müssen auf die Interaktivitäts-Assemblies verweisen, die Teil der Blend SDK sind.

Sobald Sie die Referenzen eingerichtet haben, ist es so einfach wie GoToStateAction auf eine Art Trigger zu reagieren ... alles in XAML. Hier ist ein Beispiel, das die Aktion aus dem Loaded-Ereignisse feuert mit einem 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> 

Mehr Infos und Tutorials über die spezifische GoToState Aktion here.

BEARBEITEN: Diese Antwort ist spezifisch für Silverlight, nicht sicher, ob dies in WPF verfügbar ist.

+0

Ich verwende Blend 4, würde ich noch das Blend 3 SDK brauchen? --- Nein. – Peanut

+0

Dies funktionierte PERFEKT. Vielen Dank!!! – Peanut