单击GridViewItem时如何导航到页面?

时间:2015-06-12 21:58:07

标签: c# xaml

我有一个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页?

1 个答案:

答案 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));
    }