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