2012-04-08 10 views
5

Okay, wenn DataTriggers in Silverlight und Windows 8 nicht mehr funktionieren, kann mir jemand sagen, wie ich diese Funktion ersetzen kann?Trigger werden in Windows 8 XAML nicht unterstützt?

Zum Beispiel;

In einem Listview oder Gridview, wenn ein Element einen Wert x,

hat
if x == "True" 
StackPanel style= "MakeBackgroundGreen" 
else 
StackPanel style="MakeBackgroundRed" 

Gibt es eine Möglichkeit etwas wie dies in Windows 8 Metro-Stil App mithilfe von XAML und C# (bevorzugt C#, aber jede Sprache zu erstellen Wird besorgt).

Ich habe gehört, einige Leute erwähnen VSM (Visual State Manager), wie kann ich das tun?

Vielen Dank im Voraus.

+0

Schauen Sie auch unter: http: // Stackoverflow .com/questions/7439532/datatrigger-in-winrt –

+1

Entschuldigung? NOTHING hat sich in XAML für Windows 8 geändert. Sprichst du von WinRT? DataTriggers funktionieren völlig einwandfrei auf meiner wpf-Anwendung, wenn sie in Windows 8 ausgeführt werden. – TomTom

Antwort

2

Sie müssen von Visual State Manager wie folgt verwenden:

<VisualStateManager.VisualStateGroups> 

     <!-- Visual states reflect the application's view state --> 
     <VisualStateGroup> 
      <VisualState x:Name="FullScreenLandscape"/> 
      <VisualState x:Name="Filled"/> 

      <!-- The back button respects the narrower 100-pixel margin convention for portrait --> 
      <VisualState x:Name="FullScreenPortrait"> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="backButton" Storyboard.TargetProperty="Style"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PortraitBackButtonStyle}"/> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
      </VisualState> 

      <!-- The back button and title have different styles when snapped --> 
      <VisualState x:Name="Snapped"> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="backButton" Storyboard.TargetProperty="Style"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SnappedBackButtonStyle}"/> 
        </ObjectAnimationUsingKeyFrames> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="pageTitle" Storyboard.TargetProperty="Style"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SnappedPageHeaderTextStyle}"/> 
        </ObjectAnimationUsingKeyFrames> 

       </Storyboard> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 

nach, dass Sie Zustand programmatisch wie folgt ändern:

 VisualStateManager.GoToState(this, "stateName", true); 
Verwandte Themen