在Windows 10

时间:2015-11-01 09:42:42

标签: c# gridview winrt-xaml uwp

我正在创建一个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);

两者似乎都返回空引用! 我哪里错了?

1 个答案:

答案 0 :(得分:3)

这个问题可以帮到你:

Detecting a scroll event in GridView (Windows 8)

您可以通过以下方式执行此操作:WinRT XAML Toolkit中的GetFirstDescendantOfType和GetDescendantsOfType扩展方法。

请参阅此帖:http://mikaelkoskinen.net/post/WinRT-XAML-Automatically-Scrolling-ListView-to-Bottom-and-Detecting-When-ListView-is-Scrolled

更新:

在同一个问题中,有一个很好的解决方法:

  

编辑GridView的模板,并查看XAML内部以查找   ScrollViewer是GridView的一个组件。

     

ScrollViewer有一个您可以订阅的ViewChanged事件。   现在每当滚动GridView时,都会触发此事件。

试试吧!