GridView不是Swiping

时间:2014-05-30 00:31:21

标签: c# xaml gridview windows-8 winrt-xaml

我创建了一个像这样定义的ListView:

            <ListView     x:Name="libraryListView"
                      AutomationProperties.AutomationId="VideoListView"
                      AutomationProperties.Name="Videos"
                      TabIndex="1"
                      Padding="0,0,4,0"
                      ItemsSource="{Binding}"
                      IsSwipeEnabled="False"
                      SelectionChanged="LibraryListView_SelectionChanged"
                      ItemTemplate="{StaticResource LibraryItemTemplate}"
                      ItemContainerStyle="{StaticResource LibraryListViewItemStyle}">
        </ListView>

并且LibraryItemTemplate定义如下:

        <DataTemplate x:Key="LibraryItemTemplate">

        <Grid Height="191"
              UseLayoutRounding="True">
            <Grid.Background>
                <ImageBrush Stretch="Fill"
                            ImageSource="Assets/BookShelf.jpg" />
            </Grid.Background>

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>

            <Grid x:Name="gridTitle"
                  Background="{Binding Text, Converter={StaticResource LibraryItemBackgroundConverter}, ElementName=tbTitle}"
                  Margin="36,4,18,14">

                <TextBlock x:Name="tbTitle"
                           TextWrapping="Wrap"
                           VerticalAlignment="Center"
                           RenderTransformOrigin="0.5,0.5"
                           Width="130"
                           Margin="0,0,0,0.2"
                           TextAlignment="Center"
                           FontSize="18.667"
                           FontWeight="Bold"
                           UseLayoutRounding="False"
                           d:LayoutRounding="Auto">
                    <TextBlock.RenderTransform>
                        <CompositeTransform Rotation="-90" />
                    </TextBlock.RenderTransform>
                    <Run Text="{Binding Title}" />
                </TextBlock>
            </Grid>

            <Grid x:Name="gridBooks"
                  Grid.Column="1"
                  Margin="0">

                <!--<local:BooksUC />-->

                <GridView x:Name="booksGridView"
                          AutomationProperties.AutomationId="ItemGridView"
                          AutomationProperties.Name="Grouped Items"
                          ItemsSource="{Binding Items}"
                          ItemTemplateSelector="{StaticResource textbookTemplateSelector}"
                          SelectionMode="Multiple"
                          IsItemClickEnabled="True"
                          ItemClick="booksGridView_ItemClick"
                          SelectionChanged="booksGridView_SelectionChanged"
                          IsSwipeEnabled="True"
                          ScrollViewer.HorizontalScrollBarVisibility="Auto" 
                          ScrollViewer.HorizontalScrollMode="Enabled"
                          ScrollViewer.IsHorizontalRailEnabled="False"
                          ScrollViewer.VerticalScrollBarVisibility="Disabled"
                          ScrollViewer.VerticalScrollMode="Disabled"
                          ScrollViewer.IsVerticalRailEnabled="False">

                    <GridView.ItemsPanel>
                        <ItemsPanelTemplate>
                            <WrapGrid Orientation="Horizontal" />
                        </ItemsPanelTemplate>
                    </GridView.ItemsPanel>
                </GridView>

            </Grid>
        </Grid>
    </DataTemplate>

页面的结果如下:

Screen Capture

我看到的问题是GridView向左滑动。第一个货架上有15个元素。

知道我的XAML代码有什么问题吗?

THX

1 个答案:

答案 0 :(得分:0)

LibraryItemTemplate存在两个问题:

  1. 更改了列定义
  2. 更改了ItemsPanel
  3. 模板的代码是:

            <DataTemplate x:Key="LibraryItemTemplate">
    
            <Grid Height="191"
                  UseLayoutRounding="True">
                <Grid.Background>
                    <ImageBrush Stretch="Fill"
                                ImageSource="Assets/BookShelf.jpg" />
                </Grid.Background>
    
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
    
                <Grid x:Name="gridTitle"
                      Background="{Binding Text, Converter={StaticResource LibraryItemBackgroundConverter}, ElementName=tbTitle}"
                      Margin="36,4,18,14">
    
                    <TextBlock x:Name="tbTitle"
                               TextWrapping="Wrap"
                               VerticalAlignment="Center"
                               RenderTransformOrigin="0.5,0.5"
                               Width="130"
                               Margin="0,0,0,0.2"
                               TextAlignment="Center"
                               FontSize="18.667"
                               FontWeight="Bold"
                               UseLayoutRounding="False"
                               d:LayoutRounding="Auto">
                        <TextBlock.RenderTransform>
                            <CompositeTransform Rotation="-90" />
                        </TextBlock.RenderTransform>
                        <Run Text="{Binding Title}" />
                    </TextBlock>
                </Grid>
                <Grid x:Name="gridBooks"
                      Grid.Column="1"
                      Margin="0,0,36,0">
    
                    <!--<local:BooksUC />-->
    
                    <GridView x:Name="booksGridView"
                              AutomationProperties.AutomationId="ItemGridView"
                              AutomationProperties.Name="Grouped Items"
                              ItemsSource="{Binding Items}"
                              ItemTemplateSelector="{StaticResource textbookTemplateSelector}"
                              SelectionMode="Multiple"
                              IsItemClickEnabled="True"
                              ItemClick="booksGridView_ItemClick"
                              SelectionChanged="booksGridView_SelectionChanged"
                              IsSwipeEnabled="True"
                              ScrollViewer.HorizontalScrollBarVisibility="Auto"
                              ScrollViewer.HorizontalScrollMode="Enabled"
                              ScrollViewer.IsHorizontalRailEnabled="False"
                              ScrollViewer.VerticalScrollBarVisibility="Disabled"
                              ScrollViewer.VerticalScrollMode="Disabled"
                              ScrollViewer.IsVerticalRailEnabled="False">
    
                        <GridView.ItemsPanel>
                            <ItemsPanelTemplate>
                                <WrapGrid Orientation="Vertical"
                                          MaximumRowsOrColumns="1" />
                            </ItemsPanelTemplate>
                        </GridView.ItemsPanel>
                    </GridView>
    
                </Grid>
            </Grid>
        </DataTemplate>
    

    这些解决了这个问题。