2017-09-08 53 views
0

在我的FlipView中,我在DataTemplate中設置了VisualState觸發器,以基於窗口寬度顯示/隱藏網格。 DataTemplate中的觸發器在FlipView之外工作良好,但是當我將Grid放入FlipView DataTemplage時,觸發器永遠不會觸發。我在ListView中使用了這種技術而沒有問題,所以不知道這裏有什麼不同。VisualStates不能在UWP中使用FlipView

<FlipView> 
    <FlipView.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <VisualStateManager.VisualStateGroups> 
        <VisualStateGroup> 
         <VisualState> 
          <VisualState.StateTriggers> 
           <AdaptiveTrigger MinWindowWidth="0" /> 
          </VisualState.StateTriggers> 
          <VisualState.Setters> 
           <Setter Target="View1.Visibility" Value="Collapsed" /> 
           <Setter Target="View2.Visibility" Value="Visible" /> 
          </VisualState.Setters> 
         </VisualState> 
         <VisualState> 
          <VisualState.StateTriggers> 
           <AdaptiveTrigger MinWindowWidth="700" /> 
          </VisualState.StateTriggers> 
          <VisualState.Setters> 
           <Setter Target="View1.Visibility" Value="Visible" /> 
           <Setter Target="View2.Visibility" Value="Collapsed" /> 
          </VisualState.Setters> 
         </VisualState> 
        </VisualStateGroup> 
       </VisualStateManager.VisualStateGroups> 
       <Grid x:Name="View1"></Grid> 
       <Grid x:Name="View2"></Grid> 
      </Grid> 
     </DataTemplate> 
    </FlipView.ItemTemplate> 
</FlipView> 
+0

你可以發佈正確的FlipView,我看到代碼缺失標籤。這基本上是不完整的xaml代碼。 – AVK

+0

是的,它已被更新。 – Scott

回答

0

可視狀態沒有一個DataTemplate內工作,除非頂層容器是Control(退房第一個參數VisualStateManager.GoToState()這是引擎蓋下的稱呼)。在你的情況下,這是一個Grid,所以它不會工作。

一個簡單的解決方法是包裝你Grid一個UserControl,或用空的樣式一個ContentControl內(見我的其他回答here)。

如果您已在此級別定義了這組可視狀態,並且希望將相同的規則應用於頁面內的某些DataTemplate。看看這個answer,我用Behavior來通過VisualStateGroup參考,而不是複製它們,以保持所有MinWindowWidth設置在一個地方。

相關問題