Reputation: 1702
I've a grid view with a custom control item as following. The items are UserControll of type StaticResource: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>
Because sender in the event is the GridView, is there a way to get back the UserControl clicked in listView_ItemClick event?
Upvotes: 2
Views: 1602
Reputation: 39102
Yes, you can use the ContainerFromItem
method of GridView
to retrieve the GridViewItem
element that wraps your template contents. Then you can use VisualTreeHelper
to locate the user control by its type.
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.
Upvotes: 2