2015-11-01 27 views
1

我正在創建一個Windows 10 UWP應用程序。 我有一個GridView在Windows 10中檢測GridView中ScrollViewer的ViewChanged事件

<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); 

似乎都返回空引用! 我哪裏錯了?

回答

3

這個問題將幫助您:在WinRT的XAML工具包GetFirstDescendantOfType和GetDescendantsOfType擴展方法:

Detecting a scroll event in GridView (Windows 8)

你可以做到這一點。

請看到這個帖子:http://mikaelkoskinen.net/post/WinRT-XAML-Automatically-Scrolling-ListView-to-Bottom-and-Detecting-When-ListView-is-Scrolled

UPDATE:

在同樣的問題,有一個很好的解決方法:

編輯在GridView的模板,並期待在XAML內找到一個 ScrollViewer,它是GridView的一個組件。

ScrollViewer有一個可以訂閱的ViewChanged事件。 現在無論何時GridView被滾動,這個事件都會被觸發。

試試看!

+0

我試過GetFirstDescendantOfType,但它返回null。 – AbsoluteSith

+0

答案更新了,你試過了嗎? –

+0

是的工作!謝謝! – AbsoluteSith