0

当用户选择 ComboBox 项时,我的 GridView 重新填充。当用户将gridView滚动到gridview的中间并且当他在comboBox中选择不同的项目时,问题就开始了,发生的事情是你的滚动看起来像是开始了,但是现在当你尝试移动一点或离开您会看到滚动位置已更新并出现在用户选择不同组合框项目时的位置。此外,虽然滚动在开始时出现了一秒钟,但您可以看到,在这一秒内,gridview 显示了 middle-r 组(它是一个分组的网格视图)。所以如上所述,我想在填充 gridview 后重置 gridview scool 位置(到起始位置)。

这是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>
4

1 回答 1

1

你如何(重新)填充gridview?您是否在重新填充之前将其设置为空?这可能会有所帮助。

例如,在用户选择组合框项目后,在为 gridview 设置源之前尝试添加它:

GridGames.ItemsSource = 没有

于 2013-05-14T01:55:46.033 回答