在 windows 10 中检测 GridView 内的 ScrollViewer 的 ViewChanged 事件
Detecting the ViewChanged event of the ScrollViewer inside a GridView in windows 10
我正在创建一个 windows 10 UWP 应用程序。
我有一个 GridView
<GridView x:Name="gv" Margin="8,20,8,8"
Grid.Row="1"
ItemClick="gv_ItemClick"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollMode="Enabled"
IsItemClickEnabled="True"
SizeChanged="GridView_SizeChanged"
SelectionMode="Single">
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
</Style>
</GridView.ItemContainerStyle>
<GridView.ItemTemplate>
<DataTemplate>
<Grid >
<Image Source="{Binding thumbnailPath}"
Stretch="UniformToFill" />
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
因为里面已经有一个scrollviewer,所以我想触发这个scrollviewer的viewchanged事件。
我已经试过了,
var scrollViewer = gv.GetFirstDescendantOfType<ScrollViewer>();
和
ScrollViewer scroll = FindFirstElementInVisualTree<ScrollViewer>(gv);
两者似乎都是 return 空引用!
我哪里错了?
这个问题对你有帮助:
Detecting a scroll event in GridView (Windows 8)
您可以通过以下方式实现:WinRT XAML 工具包中的 GetFirstDescendantOfType 和 GetDescendantsOfType 扩展方法。
更新:
在同一个问题中,有一个很好的解决方法:
Edit a template of the GridView, and look inside the XAML to find a
ScrollViewer which is a component of the GridView.
The ScrollViewer has a ViewChanged event that you can subscribe to.
Now whenever the GridView is scrolled, this event will be fired.
试试吧!
我正在创建一个 windows 10 UWP 应用程序。 我有一个 GridView
<GridView x:Name="gv" Margin="8,20,8,8"
Grid.Row="1"
ItemClick="gv_ItemClick"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollMode="Enabled"
IsItemClickEnabled="True"
SizeChanged="GridView_SizeChanged"
SelectionMode="Single">
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
</Style>
</GridView.ItemContainerStyle>
<GridView.ItemTemplate>
<DataTemplate>
<Grid >
<Image Source="{Binding thumbnailPath}"
Stretch="UniformToFill" />
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
因为里面已经有一个scrollviewer,所以我想触发这个scrollviewer的viewchanged事件。
我已经试过了,
var scrollViewer = gv.GetFirstDescendantOfType<ScrollViewer>();
和
ScrollViewer scroll = FindFirstElementInVisualTree<ScrollViewer>(gv);
两者似乎都是 return 空引用! 我哪里错了?
这个问题对你有帮助:
Detecting a scroll event in GridView (Windows 8)
您可以通过以下方式实现:WinRT XAML 工具包中的 GetFirstDescendantOfType 和 GetDescendantsOfType 扩展方法。
更新:
在同一个问题中,有一个很好的解决方法:
Edit a template of the GridView, and look inside the XAML to find a ScrollViewer which is a component of the GridView.
The ScrollViewer has a ViewChanged event that you can subscribe to. Now whenever the GridView is scrolled, this event will be fired.
试试吧!