使用VisualStateManager更改ItemsPanelTemplate将禁用滚动条

时间:2013-04-28 12:24:35

标签: xaml gridview scrollbar orientation itemspaneltemplate

我有一个带有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,方向会正确更改,但是horizo​​nzal滚动条可见但不可用。如果我然后切换回Snapped View,滚动条可见但不可用。

在运行时更改模板是否存在已知问题?有没有解决这个问题的方法?使用VisualStateManager更改模板是错误的吗?

感谢您的帮助

0 个答案:

没有答案