2015-06-12 3 views
1

У меня есть GridView, который содержит 2 элемента определяется следующим образом:Как перейти на страницу при нажатии GridViewItem?

<GridView Name="Grd1" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1" Width="Auto" SelectionMode="None" IsItemClickEnabled="True" ItemClick="GridViewItem_Click"> 
     <GridView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapGrid Orientation="Horizontal" Width="Auto"/> 
      </ItemsPanelTemplate> 
     </GridView.ItemsPanel> 
     <GridViewItem Name ="GrdI1"> 
      <StackPanel> 
       <Image HorizontalAlignment="Center" Height="100" Width="100" Source="Image1.png" /> 
       <TextBlock Text="Some sutff"/> 
      </StackPanel> 
     </GridViewItem> 
     <GridViewItem Name="GrdI2" > 
      <StackPanel> 
       <Image HorizontalAlignment="Center" Height="100" Width="100" Source="Image2.png"/> 
       <TextBlock Text="Some stuff"/> 
      </StackPanel> 
     </GridViewItem> 
    </GridView> 

Как я могу обрабатывать событие на код позади, чтобы перейти к странице 1, когда элемент GrdI1 нажата и страница 2, когда элемент GrdI2 нажата ?

+0

Можете ли вы предоставить весь код XAML? Поэтому я могу вставить его и посмотреть, смогу ли я помочь вам – voytek

+0

Это уже весь код xaml для gridview. Просто вставьте его в современный образец приложения в визуальной студии, и он будет работать. – Farouk

ответ

0

Чтобы обработать события щелчка в GridView, вы должны установить свойство IsItemClickEnabled GridView в True и SelectionMode равным None.

Установите новый обработчик событий для события ItemClick и в параметре ItemClickEventArgs (e по умолчанию) вы можете поймать событие с щелчком. (e.ClickedItem)

Это даст вам, какой элемент вы нажали в GridView, и вы можете использовать метод Frame.Navigate для навигации по вашим страницам.

Изменить ваш XAML-код, как этот

<GridView Name="Grd1" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1" Width="Auto" SelectionMode="None" IsItemClickEnabled="True" ItemClick="GridViewItem_Click"> 
     <GridView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapGrid Orientation="Horizontal" Width="Auto"/> 
      </ItemsPanelTemplate> 
     </GridView.ItemsPanel> 
     <GridViewItem Name ="GrdI1"> 
      <StackPanel Tag="Grid1"> 
       <Image HorizontalAlignment="Center" Height="100" Width="100" Source="Image1.png" /> 
       <TextBlock Text="Some sutff"/> 
      </StackPanel> 
     </GridViewItem> 
     <GridViewItem Name="GrdI2" > 
      <StackPanel Tag="Grid2"> 
       <Image HorizontalAlignment="Center" Height="100" Width="100" Source="Image2.png"/> 
       <TextBlock Text="Some stuff"/> 
      </StackPanel> 
     </GridViewItem> 
    </GridView> 

И обработчик событий должен быть, как это

private void Grd1_ItemClick(object sender, ItemClickEventArgs e) 
    { 
     var clickedItem = ((StackPanel)e.ClickedItem); 
     if (clickedItem.Tag != null) 
      if (clickedItem.Tag.ToString() == "Grid1") 
       Frame.Navigate(typeof(Page1)); 
      else 
       Frame.Navigate(typeof(Page2)); 
    } 
+0

На самом деле я хочу получить имя щелкнутого GridViewItem, но я не знаю, как это сделать, потому что у моего e.ClickedItem нет такого свойства ... – Farouk

+0

Вы можете связать имя GridViewItem с атрибутом тега Stackpanel и поймать его событие. –

+0

Спасибо, но не могли бы вы дать пример кода? Лучше понять. – Farouk

Смежные вопросы