在Grid中滚动Pivot

时间:2017-03-03 16:07:49

标签: c# .net uwp uwp-xaml

我正在尝试创建一个具有外部网格的页面,该网格将页面分成两半,并在网格列上插入一个轴。

代码:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>


        <Pivot Grid.Row="1" Grid.Column="1">
            <Pivot.HeaderTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}" FontSize="18" />
                </DataTemplate>
            </Pivot.HeaderTemplate>
            <PivotItem x:Name="Tab1" Header="Tab 1">
                <ListView x:Name="matchesList">
                    <ListView.ItemTemplate>
                        <DataTemplate x:DataType="local:Data">
                            <Grid>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="{x:Bind Match}"/>
                                </StackPanel>
                            </Grid>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </PivotItem>
            <PivotItem x:Name="Tab2" Header="Tab 2">

            </PivotItem>
        </Pivot>
</Grid>

我希望轴项目滚动。我已经尝试将scrollviewer放在很多内部元素周围,但围绕整个数据透视表是它出现的唯一方式。 ListView正确填充,但只是在屏幕的末尾运行,仍然无法滚动。如何让ListView在枢轴内滚动?

谢谢!

1 个答案:

答案 0 :(得分:0)

我已经厌倦了,如果您启用IsHorizontalScrollChainingEnabled,它应该可以运作:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>


    <Pivot Grid.Row="1" Grid.Column="1">
        <Pivot.HeaderTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding}" FontSize="18" />
            </DataTemplate>
        </Pivot.HeaderTemplate>
        <PivotItem x:Name="Tab1" Header="Tab 1">
            <ListView x:Name="matchesList" ScrollViewer.IsHorizontalScrollChainingEnabled="True">
                <ListView.ItemTemplate>
                    <DataTemplate x:DataType="local:Data">
                        <Grid>
                            <StackPanel Orientation="Horizontal">
                                <TextBlock Text="{x:Bind Match}"/>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </PivotItem>
        <PivotItem x:Name="Tab2" Header="Tab 2">

        </PivotItem>
    </Pivot>
</Grid>

通常滚动 ScrollViewer 的处理级别非常低,以提高性能。虽然这也有一些缺点 - 当你想使用 PointerEvents 时会带来问题。为了让生活更轻松,设计了两个属性 - 垂直/水平链接 - 这允许将垂直/水平滚动从子节点传递到父节点 - 就像在您的示例中一样 - ListView 垂直滚动并且 Pivot < / em>水平。