2012-04-08 3 views
5

Хорошо, если DataTriggers больше не работают в Silverlight и Windows 8, может ли кто-нибудь сказать мне, как заменить эту функцию?Триггеры не поддерживаются в Windows 8 XAML?

Например,

В ListView или GridView, если элемент имеет значение х,

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

Есть ли способ, чтобы создать что-то вроде этого в ОС Windows 8 метро приложения в стиле с использованием XAML и C# (предпочтительный C#, но любой язык Сделаю).

Я слышал, что некоторые люди упоминают использование VSM (Visual State Manager), как я могу это сделать?

Большое спасибо.

+0

Посмотрите также по адресу: // StackOverflow .com/вопросы/7439532/datatrigger-in-winrt –

+1

Извините? НИЧЕГО не изменилось в XAML для WIndows 8. Вы говорите о WinRT? DataTriggers полностью работают с моим приложением wpf при работе в Windows 8. – TomTom

ответ

2

Вы должны будете использовать визуальное состояние менеджера, как это:

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

после этого вы можете изменить состояние программно как это:

 VisualStateManager.GoToState(this, "stateName", true); 
Смежные вопросы