2012-04-08 24 views
5

Ok, jeśli DataTriggers nie działają już w Silverlight i Windows 8, czy ktoś mógłby mi powiedzieć, jak zastąpić tę funkcję?Wyzwalacze nie są obsługiwane w systemie Windows 8 XAML?

Na przykład;

W ListView lub GridView, jeśli przedmiot ma wartość x,

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

Czy istnieje sposób, aby stworzyć coś takiego w systemie Windows 8 metra stylu aplikacji przy użyciu XAML i C# (preferowany C#, ale żadnego języka zrobi).

Słyszałem, że niektórzy ludzie wspominają o używaniu VSM (Visual State Manager), jak mogę to zrobić?

Dziękuję bardzo z góry.

+0

Spójrz również na stronie: http: // stackoverflow .pl/pytania/7439532/datatrigger-in-winrt –

+1

Przepraszam? NIC się nie zmieniło w XAML dla Windows 8. Czy mówisz o WinRT? DataTriggers działa całkowicie dobrze na mojej aplikacji wpf podczas działania w Windows 8. – TomTom

Odpowiedz

2

Będziesz musiał użyć programu Visual State Menedżer takiego:

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

po tym można programowo zmienić stan tak:

 VisualStateManager.GoToState(this, "stateName", true); 
Powiązane problemy