[英]UWP How to get the custom item clicked in a GridView
I've a grid view with a custom control item as following. 我有一个带有自定义控件项的网格视图,如下所示。 The items are UserControll of type StaticResource:UserControlCataloghiTematici.
这些项目是类型为StaticResource:UserControlCataloghiTematici的UserControll。
<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>
Because sender in the event is the GridView, is there a way to get back the UserControl clicked in listView_ItemClick event? 由于事件中的发件人是GridView,是否有办法找回在listView_ItemClick事件中单击的UserControl?
Yes, you can use the ContainerFromItem
method of GridView
to retrieve the GridViewItem
element that wraps your template contents. 是的,您可以使用
GridView
的ContainerFromItem
方法来检索包装模板内容的GridViewItem
元素。 Then you can use VisualTreeHelper
to locate the user control by its type. 然后,您可以使用
VisualTreeHelper
按其类型查找用户控件。
var gridViewItem = MyGridView.ContainerFromItem(e.ClickedItem) as GridViewItem;
var control = gridViewItem.FindDescendant<UserControlCataloghiTematici>() ;
This requires you to use VisualTreeExtensions
from the UWP Community Toolkit which you can get on NuGet. 这要求您使用UWP社区工具包中的
VisualTreeExtensions
,您可以在NuGet上获得它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.