DataGrid XAML 控件无法通过触摸滚动

DataGrid XAML control can't be scrolled by touch

我正在开发一个 uwp 应用程序。该应用程序有一个 DataGrid XAML 控件。

我的问题是我可以用鼠标滚动它,但是我不能用触摸滚动它。奇怪的是,我可以用两根手指触摸来滚动它。

请告诉我如何解决这个问题。

这是我的代码。

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Loaded="ContentGrid_Loaded">
        <SplitView x:Name="spritView"
                   IsPaneOpen="{Binding ElementName=HamburgerButton,Path=IsChecked, Mode=TwoWay}"
                   DisplayMode= "CompactInline"
                   PaneBackground="LightGray"
                   PanePlacement="Left"
                   CompactPaneLength ="0"
                   OpenPaneLength="200"
                       Margin="0,48,0,0"
                       >
            <SplitView.Pane>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition />
                    </Grid.RowDefinitions>
                    <ScrollViewer>
                        <StackPanel Orientation="Horizontal" VerticalAlignment="Top">
                            <Button x:Name="BtExit" Click="BtExit_Click">
                                <Image Source="/pictuer/left_arrow.png" Height="32"/>
                            </Button>
                            <TextBlock Text="Category" Width="140" Style="{StaticResource TextBlockFontSize1}"/>
                        </StackPanel>

                    </ScrollViewer>
                </Grid>
            </SplitView.Pane>
            <ScrollViewer ZoomMode="Enabled"
                          ScrollViewer.VerticalScrollBarVisibility="Auto"
                          ScrollViewer.VerticalScrollMode="Auto"
                          ScrollViewer.HorizontalScrollBarVisibility="Auto"
                          ScrollViewer.HorizontalScrollMode="Auto"
                          >
                <StackPanel Background="Snow" >
                    <controls: x:Name="dataGrid" AutoGenerateColumns="False"
                                           GridLinesVisibility="All" AlternatingRowBackground="LightCyan"
                                       ItemsSource="{Binding DefuctLists}">
                        <controls:DataGrid.Columns>
                            <controls:DataGridTextColumn Header="Category" Binding="{Binding Item_Lb}" IsReadOnly="True" />
                        </controls:DataGrid.Columns>

                    </controls:DataGrid>
                    <Border Style="{StaticResource borderLineLightGray}" Margin="0,8,0,0"/>
                </StackPanel>
            </ScrollViewer>

        </SplitView>

    </Grid>

DataGrid XAML control can't be scrolled by touch

为了检查你的代码,我有点困惑,为什么你将 DataGrid 插入 ScrollViewer,为什么你将 DataGrid 父面板设置为 StackPanel将使 DataGrid 的实际高度大于内容的高度,这将使 DataGrid 无法滚动。

如果我们删除 ScrollViewer 并将 StackPanel 替换为 Grid,则 DataGrid 将响应触摸滚动。

<SplitView.Content>
    <Grid>
        <controls:DataGrid
            x:Name="dataGrid"
            AlternatingRowBackground="LightCyan"
            AutoGenerateColumns="False"
            GridLinesVisibility="All"
            >
            <controls:DataGrid.Columns>
                <controls:DataGridTextColumn
                    Binding="{Binding}"
                    Header="Category"
                    IsReadOnly="True"
                    />
            </controls:DataGrid.Columns>
        </controls:DataGrid>
    </Grid>
</SplitView.Content>

简单的说,还没有实现,你不能在Xbox和其他触摸设备上滚动。查看 GitHub 问题: https://github.com/windows-toolkit/WindowsCommunityToolkit/issues/2864