我正在尝试向 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 没有接受这些更改吗?