我有一个带有自定义控件项目的网格视图,如下所示。这些项是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?
答案 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上获取。