2012-04-08 14 views
5

De acuerdo, si DataTriggers ya no funcionan en Silverlight y Windows 8, ¿alguien podría decirme cómo reemplazar esta característica?Los desencadenadores no son compatibles con Windows 8 XAML?

Por ejemplo;

En un ListView o GridView, si un artículo tiene un valor x,

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

¿Hay una manera de crear algo como esto en la aplicación de Windows 8 de estilo de metro usando XAML y C# (preferido C#, pero cualquier idioma lo hará).

He escuchado a algunas personas mencionar el uso de VSM (Visual State Manager), ¿cómo puedo hacer esto?

Gracias mucho por adelantado.

+0

Tome una mirada también en: http: // stackoverflow .com/questions/7439532/datatrigger-in-winrt –

+1

¿Lo sentimos? NADA ha cambiado en XAML para Windows 8. ¿Estás hablando de WinRT? DataTriggers funciona perfectamente en mi aplicación wpf cuando se ejecuta en Windows 8. – TomTom

Respuesta

2

Vas a tener que utilizar el Administrador de estado visual de esta manera:

<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> 

después de que se puede cambiar de estado mediante programación como esto:

 VisualStateManager.GoToState(this, "stateName", true); 
Cuestiones relacionadas