Windows 8.1 の Xaml/VB アプリに画面サイズのブレークポイントを追加しようとしています。メイン ビューのコード ビハインドで SizeChanged イベントを処理VisualStateManager.GoToState
し、.xaml ファイルにある定義済みのビジュアル ステートに伝播する必要がある呼び出しを行っています。これは、小さな画面で背景色を変更する必要があるのに変更しない小さな例のコード全体です。
MainView.xaml :
<Page x:Name="PageRoot"
x:Class="WinStoreMvvmTemplate.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid Background="Red" x:Name="ContentGrid"></Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="SmallLayout">
<Storyboard>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="ContentGrid"
Storyboard.TargetProperty="Background">
<DiscreteObjectKeyFrame KeyTime="0" Value="Blue"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Page>
MainView.xaml.vb :
Public NotInheritable Class MainView : Inherits Page
Private Sub WindowSizeChanged(sender As Object, e As SizeChangedEventArgs) _
Handles Me.SizeChanged
If e.NewSize.Width < 340 Then
VisualStateManager.GoToState(Me, "SmallLayout", True)
End If
End Sub
End Class
イベントは間違いなくコードの最後で発生しており、GoToState
メソッドは間違いなく呼び出されています。
なぜ xaml がこれらの変更を反映しないのか、何か考えはありますか?