0

ユーザーが ComboBox 項目を選択すると、GridView が再設定されました。問題は、ユーザーが gridView をどこかで gridview の中央までスクロールし、comboBox で別の項目を選択すると、スクロールが開始されたように見えますが、少し右に移動しようとすると発生します。または、スクロール位置が更新され、ユーザーが別のコンボボックス項目を選択した時点の場所に表示されることがわかります。また、最初にスクロールが1秒間表示されますが、この1秒間はグリッドビューに中央のrグループが表示されていることがわかります(グループ化されたグリッドビューです)。したがって、上記のように、グリッドビューにデータが入力された後、グリッドビューのスクロール位置を(開始位置に)リセットしたいと思います。

グリッドビューの持ち物は次のとおりです。

<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

グリッドビューをどのように (再) 作成しますか? 再設定する前に空に設定していますか? それは役立つかもしれません。

たとえば、ユーザーがコンボボックス項目を選択した後、グリッドビューのソースを設定する前にこれを追加してみてください:

GridGames.ItemsSource = なし

于 2013-05-14T01:55:46.033 に答える