2017-06-28 19 views
0

私はVisualStateManagerで初めて作業しています。 Unfortunatelly私はそれを実行させることはありません。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" -parameterを変更しようとしました。私はデバッグし、 "IsScreenSizeLessThan7inches()"メソッドをテストしました。しかし、この方法の結果は正しい。

GoToState()メソッドの戻り値は常にfalseで、SplittView-Controlの状態も変更されません。

私は問題を見つけることができません...

は、エラーを見つけるために私を助けてください。

ありがとうございました!

+1

を単に置くために:

は、ここで私がやったものです。 SplitViewの外に視覚状態を追加すると、魅力的に機能するはずです。 – AVK

+1

はい。それが解決策でした!ありがとうございました! – hias116

+0

あなたが回答した内容を投稿して回答としてマークし、他の人にも役立つようにしてください。 – AVK

答えて

0

AVKのコメントはとても役に立ちました。

私はVisualStateManagerをSplitViewの外に置いて、今は動作します。あなたがその状態を変更する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> 
関連する問題