c# – UWP Catch List查看滚动事件
发布时间:2020-12-15 22:29:17 所属栏目:百科 来源:网络整理
导读:我正在开发 Windows通用手机应用程序. 我有一个列表视图和一个按钮.我想在列表视图中向下滚动时隐藏按钮. 如何捕捉滚动事件?如何访问ListView中的ScrollViewer? 我尝试了几种方法,但似乎没有工作.. 我的XAML代码是: ListView x:Name="PostListView" Grid.
我正在开发
Windows通用手机应用程序.
我有一个列表视图和一个按钮.我想在列表视图中向下滚动时隐藏按钮. 如何捕捉滚动事件?如何访问ListView中的ScrollViewer? 我尝试了几种方法,但似乎没有工作.. 我的XAML代码是: <ListView x:Name="PostListView" Grid.Row="1" IsItemClickEnabled="True" ItemTemplate="{StaticResource PostItemTemplate}" ItemsSource="{Binding Feed}" ShowsScrollingPlaceholders="False" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollMode="Enabled" IncrementalLoadingTrigger="Edge"> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> <Setter Property="Padding" Value="0" /> <Setter Property="Margin" Value="0" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListViewItem"> <ListViewItemPresenter SelectedBackground="{StaticResource LightStandardColorBrush}" SelectedPointerOverBackground="{StaticResource LightStandardColorBrush}" PressedBackground="{StaticResource LightStandardColorBrush}" SelectedPressedBackground="{StaticResource LightStandardColorBrush}"/> </ControlTemplate> </Setter.Value> </Setter> </Style> </ListView.ItemContainerStyle> <interactivity:Interaction.Behaviors> <core:EventTriggerBehavior EventName="Tapped"> <core:InvokeCommandAction Command="{Binding PostItemTapped}" CommandParameter="{Binding ElementName=PostListView,Path=SelectedItem}"/> </core:EventTriggerBehavior> </interactivity:Interaction.Behaviors> </ListView> 解决方法
你可以用两种方式做
1)您可以在listview中侦听PointerEntered事件 <ListView PointerEntered="PointerEntered" x:Name="PostListView" > .... </ListView> private void PointerEntered(object sender,PointerRoutedEventArgs e) { listScrollviewer = Scrolling(PostListView); } private ScrollViewer Scrolling(DependencyObject depObj) { ScrollViewer foundOne = GetScrollViewer(depObj); if (foundOne != null) { // if (foundOne.VerticalOffset == 0) // //refresh.Visibility = Visibility.Visible; // else //refresh.Visibility = Visibility.Collapsed; foundOne.ViewChanging += foundOne_ViewChanging; } return foundOne; } public static ScrollViewer GetScrollViewer(DependencyObject depObj) { if (depObj is ScrollViewer) return depObj as ScrollViewer; for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) { var child = VisualTreeHelper.GetChild(depObj,i); var result = GetScrollViewer(child); if (result != null) return result; } return null; } private void foundOne_ViewChanging(object sender,ScrollViewerViewChangingEventArgs e) { //YOur logic to hide the button if (e.NextView.VerticalOffset == 0) { } else { //Hide the button } } 2)第二种方式是编辑列表视图样式.在那里你会得到滚动查看器 <ListView Style="{StaticResource ListViewStyle1}"> ... </ListView> <Style x:Key="ListViewStyle1" TargetType="ListView"> <Setter Property="IsTabStop" Value="False"/> <Setter Property="TabNavigation" Value="Once"/> <Setter Property="IsSwipeEnabled" Value="True"/> <Setter Property="HorizontalContentAlignment" Value="Stretch"/> <Setter Property="VerticalContentAlignment" Value="Bottom"/> <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/> <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Disabled"/> <Setter Property="ScrollViewer.VerticalScrollMode" Value="Auto"/> <Setter Property="ScrollViewer.ZoomMode" Value="Disabled"/> <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False"/> <Setter Property="ScrollViewer.BringIntoViewOnFocusChange" Value="True"/> <Setter Property="ItemContainerTransitions"> <Setter.Value> <TransitionCollection> <AddDeleteThemeTransition/> <ReorderThemeTransition/> </TransitionCollection> </Setter.Value> </Setter> <Setter Property="ItemsPanel"> <Setter.Value> <ItemsPanelTemplate> <ItemsStackPanel Orientation="Vertical"/> </ItemsPanelTemplate> </Setter.Value> </Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListView"> <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"> <ScrollViewer x:Name="ScrollViewer" AutomationProperties.AccessibilityView="Raw" BringIntoViewOnFocusChange="{TemplateBinding ScrollViewer.BringIntoViewOnFocusChange}" HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" IsHorizontalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsHorizontalScrollChainingEnabled}" IsVerticalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsVerticalScrollChainingEnabled}" IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" TabNavigation="{TemplateBinding TabNavigation}" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" ZoomMode="{TemplateBinding ScrollViewer.ZoomMode}"> <ItemsPresenter FooterTransitions="{TemplateBinding FooterTransitions}" FooterTemplate="{TemplateBinding FooterTemplate}" Footer="{TemplateBinding Footer}" HeaderTemplate="{TemplateBinding HeaderTemplate}" Header="{TemplateBinding Header}" HeaderTransitions="{TemplateBinding HeaderTransitions}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> </ScrollViewer> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |