Изменение ItemsPanelTemplate с помощью VisualStateManager отключает полосы прокрутки

У меня есть GridView с ItemPanel, как это:

<ItemsPanelTemplate x:Key="PanelTemplateLandscape">
    <WrapGrid Orientation="Vertical" />
</ItemsPanelTemplate>

Теперь, если приложение меняет режим на "Snapped", я бы хотел изменить ориентацию этой WrapGrid. Одним из способов является создание второго ItemsPanelTemplate следующим образом:

<ItemsPanelTemplate x:Key="PanelTemplatePortrait">
    <WrapGrid Orientation="Horizontal" />
</ItemsPanelTemplate>

А затем используйте VisualStateManager с VisualState "Snapped", чтобы изменить шаблон 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, ориентация будет изменена правильно, но горизонтальная полоса прокрутки видна, но не используется. То же самое, если я затем переключаюсь обратно на Snapped View, полоса прокрутки видна, но не используется.

Известны ли проблемы с изменением шаблонов во время выполнения? Есть ли способы обойти эту проблему? Это неправильно, чтобы изменить шаблоны с VisualStateManager?

Спасибо за вашу помощь

0 ответов

Другие вопросы по тегам