我有一个GridView,其中包含2个定义如下的项目:
<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>
当单击项目GrdI1时,我如何处理后面的代码事件以导航到第1页?单击项目GrdI2时,如何导航到第2页?
答案 0 :(得分:0)
为了处理GridView中的点击事件,您必须将GridView的IsItemClickEnabled属性设置为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));
}