2

C# のデータ ソースにバインドされる GridView があります。ユーザーが水平方向にスクロールすると、より多くのデータが読み込まれます。

GridView.xaml から:

<GridView Grid.Row="1" x:Name="GridViewStories" ItemsPanel="{StaticResource GridViewVerticalTemplate}" IsSwipeEnabled="False" SelectionMode="None" IsItemClickEnabled="True" ItemClick="GridViewStories_ItemClick" IncrementalLoadingTrigger="Edge">
    <GridView.ItemContainerTransitions>
        <TransitionCollection />
    </GridView.ItemContainerTransitions>
    <GridView.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding SquareImageURL}" Margin="10" Width="240" Height="160" />
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

これは、スナップ ビューで ListView のように動作するようにします。つまり、水平方向ではなく垂直方向にスクロールする必要があります。この問題は別として、必要なものはすべて VisualStateManager で変更できました。

GridView.xaml から:

<VisualState x:Name="Snapped">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="StackPanelHeader" Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="StackPanelHeaderSnapped" Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="StackPanelHeaderPortrait" Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="GridViewStories" Storyboard.TargetProperty="ItemsPanel">
            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource GridViewHorizontalTemplate}"/>
        </ObjectAnimationUsingKeyFrames>
    </Storyboard>
</VisualState>

StandardStyles.xaml から:

<ItemsPanelTemplate x:Key="GridViewHorizontalTemplate">
    <WrapGrid Orientation="Horizontal" HorizontalAlignment="Center" MaximumRowsOrColumns="1" />
</ItemsPanelTemplate>

GridView を Scrollviewer にラップしたくありません。これを行うと、使用している組み込みのインクリメンタル ローディングが中断されるためです。ListView を作成して、その表示と GridView の表示を切り替えるだけでよいことに気付きましたが、追加のコントロールにバインドして他の関連コードを複製する必要はありません。アイデア?

4

2 に答える 2

0
<GridView Name="display"  ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollMode="Enabled" ScrollViewer.VerticalScrollBarVisibility="Visible"  Height="550" Margin="0,0,0,0"  Grid.Row="1" RenderTransformOrigin="0.5,0.5"  SelectionMode="Single" >
    <GridView.RenderTransform>
        <CompositeTransform Rotation="0"/>
    </GridView.RenderTransform>
    <GridView.ItemsPanel>
        <ItemsPanelTemplate>
            <VariableSizedWrapGrid Orientation="Vertical" />
        </ItemsPanelTemplate>
    </GridView.ItemsPanel>
    <GridView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Vertical">
                <StackPanel.Background>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="#FFD3D9DE" Offset="1"/>
                        <GradientStop Color="#FFFAFBFB"/>
                    </LinearGradientBrush>

                </StackPanel.Background>
                <Grid x:Name="grdResultTxtBlock" VerticalAlignment="Center" HorizontalAlignment="Left" Width="500" Height="250" Margin="0,0,0,0">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="55" />
                        <RowDefinition Height="55" />
                        <RowDefinition Height="70"  />
                        <RowDefinition Height="50" />
                    </Grid.RowDefinitions>
                    <Grid Grid.Row="0">
                        <Button  Content="{Binding Call}" Height="40" Style="{StaticResource PnxButtonStyle}"   HorizontalAlignment="Left"
                         Margin="0,10,200,0" x:Name="btnXmit" VerticalAlignment="Top" Width="122" />

                        <TextBlock  x:Name="txtAddress" FontWeight="Bold"  Text="{Binding Address}" Margin="150,0,400,0" HorizontalAlignment="Left"  VerticalAlignment="Center"   Width="200"  />
                        </Grid>
                    </Grid>
              </StackPanel>
            </DataTemplate>
    </GridView.ItemTemplate>
</GridView>
于 2015-11-06T11:58:34.600 に答える
0

以下を に追加してみてくださいGridView:

<GridView.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel Orientation="Vertical"/>
    </ItemsPanelTemplate>
</GridView.ItemsPanel>
于 2012-12-16T00:31:22.630 に答える