首页 > 解决方案 > DataGrid XAML 控件无法通过触摸滚动

问题描述

我正在开发一个 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>

标签: uwpwindows-community-toolkit

解决方案


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

为了检查您的代码,我有点困惑,为什么要插入DataGridScrollViewer以及为什么要设置DataGrid父面板,因为StackPanel这会使实际高度DataGrid变大而不是内容的高度,并且DataGrid无法滚动。

如果我们删除ScrollViewer并替换StackPanelGridDataGrid将响应触摸滚动。

<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>

推荐阅读