我有一个带有ItemPanel的GridView,如下所示:
<ItemsPanelTemplate x:Key="PanelTemplateLandscape">
<WrapGrid Orientation="Vertical" />
</ItemsPanelTemplate>
现在,如果应用程序正在将模式更改为“Snapped”,我想更改此WrapGrid的方向。一种方法是创建第二个ItemsPanelTemplate,如下所示:
<ItemsPanelTemplate x:Key="PanelTemplatePortrait">
<WrapGrid Orientation="Horizontal" />
</ItemsPanelTemplate>
然后使用带有VisualState“Snapped”的VisualStateManager来更改ItemsPanel模板,如下所示:
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="DataGrid" Storyboard.TargetProperty="ItemsPanel">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PanelTemplatePortrait}"/>
</ObjectAnimationUsingKeyFrames>
为了完整性,这是GridView标记:
<GridView x:Name="DataGrid" Grid.Row="1" ItemTemplate="{StaticResource Standard250x250ItemTemplate}" ItemsPanel="{StaticResource PanelTemplateLandscape}"
ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollMode="Auto" ScrollViewer.VerticalScrollMode="Auto">
</GridView>
然后我在GridView中填充了100个项目,在启动时,它看起来很好并且有一个可以使用的水平滚动条。
现在,如果我向左“捕捉”,方向会改变,现在有一个可以使用的垂直滚动条。
到目前为止,一切都如预期一样。
但如果我现在回到FullscreenMode,方向会正确更改,但是horizonzal滚动条可见但不可用。如果我然后切换回Snapped View,滚动条可见但不可用。
在运行时更改模板是否存在已知问题?有没有解决这个问题的方法?使用VisualStateManager更改模板是错误的吗?
感谢您的帮助