2012-04-08 34 views
5

Được rồi, nếu DataTriggers không hoạt động nữa trong Silverlight và Windows 8, bất kỳ ai cũng có thể cho tôi biết cách thay thế tính năng này?Trình kích hoạt không được hỗ trợ trong Windows 8 XAML?

Ví dụ;

Trong một ListView hoặc GridView, nếu một mục có một giá trị x,

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

Có cách nào để tạo ra một cái gì đó như thế này trong Windows 8 metro ứng dụng phong cách sử dụng XAML và C# (ưu tiên C# nhưng ngôn ngữ bất kỳ sẽ làm).

Tôi đã nghe một số người đề cập đến việc sử dụng VSM (Visual State Manager), làm cách nào tôi có thể thực hiện việc này?

Cảm ơn rất nhiều trước.

+0

Hãy xem cũng tại địa chỉ: http: // stackoverflow .com/questions/7439532/datatrigger-in-winrt –

+1

Xin lỗi? NOTHING đã thay đổi trong XAML cho WIndows 8. Bạn đang nói về WinRT? DataTriggers hoạt động hoàn toàn tốt trên ứng dụng wpf của tôi khi chạy trong windows 8. – TomTom

Trả lời

2

Bạn sẽ phải sử dụng Visual quản lý Nhà nước như thế này:

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

sau đó bạn có thể thay đổi trạng thái lập trình như thế này:

 VisualStateManager.GoToState(this, "stateName", true); 
Các vấn đề liên quan