UWP如何在GridView中单击自定义项目

时间:2018-02-21 11:36:20

标签: c# gridview uwp click

我有一个带有自定义控件项目的网格视图,如下所示。这些项是StaticConesource类型的UserControll:UserControlCataloghiTematici。

<GridView SizeChanged="listView_SizeChanged" 
              x:Name="listView"  
              Background="#fff"
              Margin="0,50,10,0" BorderThickness="0" Grid.Row="1" IsItemClickEnabled="True"  ItemClick="listView_ItemClick" SelectionChanged="listView_SelectionChanged" Grid.Column="4" 
                Width="{Binding ActualWidth, ElementName=griglia}">
        <GridView.ItemTemplate>
            <DataTemplate x:Name="ImageTextDataTemplate" >
                <StaticResource:UserControlCataloghiTematici  Height="auto" Width="auto"   >
                </StaticResource:UserControlCataloghiTematici>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>

因为事件中的发件人是GridView,有没有办法找回在listView_ItemClick事件中单击的UserControl?

1 个答案:

答案 0 :(得分:2)

是的,您可以使用- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath{ CGFloat collectionHeight = self.CollectionView.bounds.size.height; CGFloat contentOffsetY = self.CollectionView.contentOffset.y; CGFloat contentSizeHeight = self.CollectionView.contentSize.height; CGFloat height = 0.0; if(isCollectionViewScrollUp && contentOffsetY + self.CollectionView.frame.size.height < contentSizeHeight) { int index = (int)indexPath.row + 1; if (index % 3 == 1){ height = collectionHeight + 300; }else if(index % 3 == 2){ height = collectionHeight + 300 * 2; }else{ height = collectionHeight + 300 * 3; } cell.transform = CGAffineTransformMakeTranslation(0, height); }else if(!isCollectionViewScrollUp && contentOffsetY > 0.0){ int index = (int)indexPath.row + 1; if(index % 3 == 1){ height = collectionHeight + 300 * 3; }else if(index % 3 == 2){ height = collectionHeight + 300 * 2; }else{ height = collectionHeight + 300; } cell.transform = CGAffineTransformMakeTranslation(0, -height); } [UIView animateWithDuration:1 delay:0.03 usingSpringWithDamping:0.8 initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseIn animations:^{ cell.transform = CGAffineTransformMakeTranslation(0, 0); } completion:nil]; } -(void) scrollViewDidScroll:(UIScrollView *)scrollView { CGPoint scrollVelocity = [CollectionView.panGestureRecognizer velocityInView:CollectionView.superview]; if (scrollVelocity.y > 0.0) { //ScrollDown isCollectionViewScrollUp = NO; } else if (scrollVelocity.y < 0.0 ){ //ScrollUp isCollectionViewScrollUp = YES; } } 的{​​{1}}方法来检索包装模板内容的ContainerFromItem元素。然后,您可以使用GridView按类型查找用户控件。

GridViewItem

这要求您使用UWP社区工具包中的VisualTreeExtensions,您可以在NuGet上获取。