christian mini
christian mini

Reputation: 1702

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.

<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

Answers (1)

Martin Zikmund
Martin Zikmund

Reputation: 39102

Yes, you can use the ContainerFromItem method of GridView to retrieve the GridViewItemelement 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

Related Questions