Muhammad Saifullah
Muhammad Saifullah

Reputation: 4292

How to Get Selected GridViewItem in GridView Selection change

I have following GridView in my windows phone 8.1 universal app xaml

<GridView Grid.Row="2" Name="grdSearchResults" ItemsSource="{Binding ListData}" SelectedItem="{Binding MySelectedItem,Mode=TwoWay}" 
                  ItemTemplate="{StaticResource MyItemTemplate}" Margin="0,0,0,0"
                  SelectionChanged="GridView_SelectionChanged">

                    </GridView>

In selection change event I want to get the GridViewItem to dynamically change the data template of the particulate item.

I tried the following code but GridView's ItemContainerGenerator property is alwasy null. How can I get the selected GridViewItem or is there any way to change data template of the selected Item on GridView?

 private void GridView_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
         var gridview = sender as GridView;

         var item = gridview.ItemContainerGenerator.ContainerFromIndex(gridview.SelectedIndex) as GridViewItem;
         item.ContentTemplate = Application.Current.Resources["MySelectedTemplate"] as DataTemplate;
 }

Upvotes: 0

Views: 1805

Answers (1)

Igor Ralic
Igor Ralic

Reputation: 15006

GridViewItem is in the list of AddedItems in SelectionChangedEventArgs.

private void grdSearchResults_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var gridViewItem = e.AddedItems.FirstOrDefault() as GridViewItem;
}

Upvotes: 1

Related Questions