Программно сбросить положение прокрутки GridView/ListView (приложение win store)

Мой GridView повторно заполняется, когда пользователь выбирает элемент ComboBox. Проблема начинается, когда пользователь прокручивает gridView где-то до середины gridview, и когда он выбирает другой элемент в comboBox, происходит следующее: прокрутка выглядит так, как будто она дошла до начала, но теперь, когда вы пытаетесь немного сдвинуться вправо или слева вы видите, что позиция прокрутки обновляется и появляется там, где она была в тот момент, когда пользователь выбрал другой элемент списка. Кроме того, хотя в начале на секунду появляется прокрутка, вы можете видеть, что в течение этой секунды в представлении сетки отображаются средние группы (это сгруппированное представление сетки). Итак, как упоминалось выше, я хочу сбросить положение прокрутки сетки (в начальную позицию) после заполнения сетки.

Вот содержимое gridview:

<GridView x:Name="GridGames"
                      Grid.Row="3"
                      Grid.Column="1"
                      Grid.ColumnSpan="2"
                      VerticalAlignment="Top"
                      IsItemClickEnabled="True"
                      ItemClick="OnGameClick"
                      ItemTemplate="{StaticResource listView}"
                      ItemsSource="{Binding Source={StaticResource viewSource}}"
                      ScrollViewer.HorizontalScrollBarVisibility="Visible"
                      ScrollViewer.HorizontalScrollMode="Enabled"
                      ScrollViewer.IsHorizontalScrollChainingEnabled="False"
                      ScrollViewer.IsVerticalScrollChainingEnabled="False"
                      ScrollViewer.VerticalScrollBarVisibility="Disabled"
                      ScrollViewer.VerticalScrollMode="Disabled">
                <GridView.ItemsPanel>
                    <ItemsPanelTemplate>
                        <VirtualizingStackPanel Orientation="Horizontal" />
                    </ItemsPanelTemplate>
                </GridView.ItemsPanel>
                <GridView.GroupStyle>
                    <GroupStyle>
                        <GroupStyle.HeaderTemplate>
                            <DataTemplate>
                                <Grid Margin="5,0,0,0">
                                    <TextBlock FlowDirection="LeftToRight"
                                               Style="{StaticResource eaderStyle}"
                                               Text="{Binding Key}" />
                                </Grid>
                                <!--  <local:GroupHeader Width="800" Height="35" />  -->
                            </DataTemplate>
                        </GroupStyle.HeaderTemplate>

                        <GroupStyle.Panel>
                            <ItemsPanelTemplate>
                                <VariableSizedWrapGrid Margin="0,0,20,0" Orientation="Vertical" />
                            </ItemsPanelTemplate>
                        </GroupStyle.Panel>
                    </GroupStyle>
                </GridView.GroupStyle>
            </GridView>
        </Grid>

А это в местных ресурсах:

<Style TargetType="GridView">
            <Setter Property="Padding" Value="0,0,0,10" />
            <Setter Property="IsTabStop" Value="False" />
            <Setter Property="TabNavigation" Value="Once" />
            <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
            <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled" />
            <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Enabled" />
            <Setter Property="ScrollViewer.IsHorizontalRailEnabled" Value="False" />
            <Setter Property="ScrollViewer.VerticalScrollMode" Value="Disabled" />
            <Setter Property="ScrollViewer.IsVerticalRailEnabled" Value="False" />
            <Setter Property="ScrollViewer.ZoomMode" Value="Disabled" />
            <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False" />
            <Setter Property="ScrollViewer.BringIntoViewOnFocusChange" Value="True" />
            <Setter Property="IsSwipeEnabled" Value="True" />
            <Setter Property="ItemContainerTransitions">
                <Setter.Value>
                    <TransitionCollection>
                        <AddDeleteThemeTransition />
                        <ContentThemeTransition />
                        <ReorderThemeTransition />
                        <EntranceThemeTransition IsStaggeringEnabled="False" />
                    </TransitionCollection>
                </Setter.Value>
            </Setter>
            <Setter Property="ItemsPanel">
                <Setter.Value>
                    <ItemsPanelTemplate>
                        <WrapGrid Orientation="Vertical" />
                    </ItemsPanelTemplate>
                </Setter.Value>
            </Setter>
            <!--
                <Setter Property="Template">
                <Setter.Value>
                <ControlTemplate TargetType="GridView">
                <ItemsPresenter />
                </ControlTemplate>
                </Setter.Value>
                </Setter>
            -->
        </Style>


<Style TargetType="GridViewItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="GridViewItem">
                    <Border x:Name="LayoutRoot"
                            Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal" />
                                <VisualState x:Name="PointerOver" />
                                <VisualState x:Name="Disabled" />
                                <VisualState x:Name="Pressed" />
                            </VisualStateGroup>
                            <VisualStateGroup x:Name="SelectionStates">
                                <VisualState x:Name="Unselected" />
                                <VisualState x:Name="Selected" />
                                <VisualState x:Name="SelectedUnfocused" />
                                <VisualState x:Name="SelectedDisabled" />
                                <VisualState x:Name="SelectedPointerOver" />
                                <VisualState x:Name="SelectedPressed" />
                            </VisualStateGroup>
                            <VisualStateGroup x:Name="FocusStates">
                                <VisualState x:Name="Focused" />
                                <VisualState x:Name="Unfocused" />
                                <VisualState x:Name="PointerFocused" />
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Grid x:Name="InnerGrid" Background="Transparent">
                            <Rectangle x:Name="PressedBackground"
                                       Fill="{StaticResource ListBoxItemPressedBackgroundThemeBrush}"
                                       Opacity="0" />
                            <ContentPresenter x:Name="ContentPresenter"
                                              Margin="0,0,5,5"
                                              HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
                                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                              Content="{TemplateBinding Content}"
                                              ContentTemplate="{TemplateBinding ContentTemplate}"
                                              ContentTransitions="{TemplateBinding ContentTransitions}" />
                            <Rectangle x:Name="FocusVisualWhite"
                                       Opacity="0"
                                       Stroke="{StaticResource FocusVisualWhiteStrokeThemeBrush}"
                                       StrokeDashArray="1,1"
                                       StrokeDashOffset=".5"
                                       StrokeEndLineCap="Square" />
                            <Rectangle x:Name="FocusVisualBlack"
                                       Opacity="0"
                                       Stroke="{StaticResource FocusVisualBlackStrokeThemeBrush}"
                                       StrokeDashArray="1,1"
                                       StrokeDashOffset="1.5"
                                       StrokeEndLineCap="Square" />
                        </Grid>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

person Yanko Pata    schedule 13.05.2013    source источник


Ответы (1)


Как вы (повторно) заполняете gridview? Вы устанавливаете его пустым перед повторным заполнением? Это может помочь.

например попробуйте добавить это, прежде чем установить источник для gridview после того, как пользователь выберет элемент со списком:

GridGames.ItemsSource = Ничего

person pumpkinszwan    schedule 14.05.2013