Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在UWP应用程序的ListView中,ScrollViewer与多个GridView的组合无法正常工作_C#_Listview_Gridview_Uwp_Uwp Xaml - Fatal编程技术网

C# 在UWP应用程序的ListView中,ScrollViewer与多个GridView的组合无法正常工作

C# 在UWP应用程序的ListView中,ScrollViewer与多个GridView的组合无法正常工作,c#,listview,gridview,uwp,uwp-xaml,C#,Listview,Gridview,Uwp,Uwp Xaml,我正在使用gridview表示不同文件夹的文件。具有一行和水平方向的gridview在垂直列表视图中排序 在这里,您可以从代码中得到一个想法: <ListView ItemSource={Binding CollectionOfFolders}> <ListView.ItemTemplate> <GridView> <GridView.ItemsPanel> &l

我正在使用
gridview
表示不同文件夹的文件。具有一行和水平方向的
gridview
在垂直
列表视图中排序

在这里,您可以从代码中得到一个想法:

<ListView ItemSource={Binding CollectionOfFolders}>

    <ListView.ItemTemplate>

        <GridView>

            <GridView.ItemsPanel>
                <ItemsPanelTemplate>
                    <ItemsWrapGrid Loaded="WrapGridLoaded"
                           MaximumRowsOrColumns="1"
                           Orientation="Vertical" />
                </ItemsPanelTemplate>
            </GridView.ItemsPanel>

            <GridView.ItemTemplate>
                ...
            </GridView.ItemTemplate>

        </GridView>

    </ListView.ItemTemplate>

</ListView>

...
这里有一个视觉印象:

问题是如何处理垂直和水平滚动

使用toch input时,everythings按所需方式工作:当您上下移动手指时,您可以在列表视图(文件夹)中滚动。如果水平移动手指,则可以在GridView(文件)中滚动

当使用鼠标滚轮或触摸板进行双指滚动手势时,问题出现了:当指针分别位于任何项目或文件上时,它不会影响ListView。所有手势都只影响gridview

我尝试禁用和启用垂直和水平滚动模式、IsVertical/HorizontalModeChanningEnabled属性以及滚动条和滚动条可见性的效果

我提出了这些与问题相关的问题,但我可以为我刚才提到的这个具体问题找到解决方案:

如果有人有想法,甚至有解决方案,那就太好了

当使用带有两个手指滚动手势的鼠标滚轮或触摸板时,问题来了:当指针分别位于任何项目或文件上时,它不会影响ListView。所有手势都只影响gridview

问题是,
GridView
项在聚焦时会捕获鼠标滚轮和双点滚动手势。根据您的需要,您可以手动禁用此功能

您可以使用内部
GridView
PointerEntered
ViewChanged
事件来实现此效果。当内部
GridView
项目滚动到顶部或底部时,使其
ScrollMode
被禁用,同时当指针进入内部
GridView
项目时,我们使内部
GridView
项目
被启用


我在msdn中找到了,它有完整的回复,您可以参考

谢谢你的回复。我试图调整您链接到我的代码的解决方案。GridView的ScrollViewer有问题。您无法调整ViewChanged方法的大小,或者至少我无法找到解决方案。您建议在某个事件发生后禁用SrollMode是个好主意。我找到了PointerHeelChanged事件,它具有识别horizontalMousWheel(和touch)操作的属性。GridView没有此事件(请参阅)。但是ListView已经实现了。我会让你了解我的流程。我必须纠正我自己。ListView中不会出现PointerWheel Changed事件(请参见)是否找到最终解决方案?