2017-06-28 40 views
0

我正在第一次使用VisualStateManager。不幸的是,我沒有得到它運行。UWP - VisualStateManager.GoToState()不起作用

這是我的XAML碼:

<SplitView x:Name="spltvw" IsPaneOpen="False" DisplayMode="CompactInline" 
       CompactPaneLength="48" Grid.Row="1" PaneBackground="#FFDADADA"> 
     <VisualStateManager.VisualStateGroups> 
      <VisualStateGroup> 
       <VisualState x:Name="lowerThan7State"> 
        <VisualState.Setters> 
         <Setter Target="spltvw.DisplayMode" Value="Overlay" /> 
        </VisualState.Setters> 
       </VisualState> 
       <VisualState x:Name="defaultState"> 
        <VisualState.Setters> 
         <Setter Target="spltvw.DisplayMode" Value="CompactInline" /> 
        </VisualState.Setters> 
       </VisualState> 
      </VisualStateGroup> 
     </VisualStateManager.VisualStateGroups> 
     .... 
</SplitView> 

,這是我的代碼隱藏:

private void Page_Loaded(object sender, RoutedEventArgs e) 
    { 
     bool test = false; 
     if(IsScreenSizeLessThan7inches()) 
      test = VisualStateManager.GoToState(this, lowerThan7State.Name, true); 
     else 
      test = VisualStateManager.GoToState(this, defaultState.Name, true); 
    } 

我已經嘗試改變 「useTransitions」 - 參數。我已經調試並測試了「IsScreenSizeLessThan7inches()」方法。但是這種方法的結果是正確的。

GoToState()方法的返回值始終爲false,並且SplittView-Control的狀態也不會更改。

我沒有找到問題...

請幫我找到錯誤。

謝謝!

+1

要簡單地說,你在裏面添加視覺SPLITVIEW狀態來改變其狀態。在SplitView外添加視覺狀態,它應該像魅力一樣工作。 – AVK

+1

是的。這是解決方案!謝謝! – hias116

+0

請發表您的答案,並將其標記爲答案,以便對其他人也有幫助。 – AVK

回答

0

AVK的評論非常有幫助。

我把VisualStateManager放在SplitView的外面,現在它可以工作。

這裏是我做了什麼:

<Grid Background="LightGray"> 
    <VisualStateManager.VisualStateGroups> 
     <VisualStateGroup> 
      <VisualState x:Name="lowerThan7State"> 
       <VisualState.Setters> 
        <Setter Target="spltvw.DisplayMode" Value="Overlay" /> 
       </VisualState.Setters> 
      </VisualState> 
      <VisualState x:Name="defaultState"> 
       <VisualState.Setters> 
        <Setter Target="spltvw.DisplayMode" Value="CompactInline" /> 
       </VisualState.Setters> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="48"></RowDefinition> 
     <RowDefinition Height="*"></RowDefinition> 
    </Grid.RowDefinitions> 
    <StackPanel Grid.Row="0" Background="#FFC31727" Orientation="Horizontal"> 
     <Button Name="btn_hamburger" Width="48" VerticalAlignment="Stretch" Click="btn_hamburger_Click"> 
      <FontIcon FontFamily="Segoe MDL2 Assets" Glyph="&#xE700;" Foreground="White" /> 
     </Button> 
     <TextBlock Margin="10,0,80,0" FontSize="25" VerticalAlignment="Center" Foreground="White" FontWeight="Bold"> 
      ***-App 
     </TextBlock> 
    </StackPanel> 
    <Grid Grid.Row="0" HorizontalAlignment="Right" Margin="0,0,4,0" VerticalAlignment="Center"> 
     <Image Source="ms-appx:///Assets/***_Logo_weiss.png" Height="44" /> 
    </Grid> 
    <SplitView x:Name="spltvw" IsPaneOpen="False" DisplayMode="CompactInline" OpenPaneLength="250" 
       CompactPaneLength="48" Grid.Row="1" PaneBackground="#FFDADADA" SizeChanged="spltvw_SizeChanged"> 
     ... 
    </SplitView> 
相關問題