GridView ItemClick事件不起作用?

时间:2018-04-28 22:35:23

标签: xaml gridview uwp

我正在开发一个UWP应用程序,尝试在ItemClick上实现GridView事件,但是,当我点击一个项目时,没有任何反应。

相关代码如下:

Book.xaml:

<Page.DataContext>
        <vm:BookViewModel x:Name="ViewModel" />
</Page.DataContext>

 <GridView Grid.Row="1"           
          Padding="18"           
          ItemsSource="{Binding Source={StaticResource BookViewSource}}"           
          IsItemClickEnabled="True" 
          ItemClick="{x:Bind ViewModel.BookGroups_OnItemClick}">

BookViewModel.cs:

public void NavigateToDetails(string url)
{
    NavigationService.Navigate(typeof(Views.DetailPage), url);
}

public void BookGroups_OnItemClick(object sender, ItemClickEventArgs e)
{

    var bookHeader = (BookGroup)e.ClickedItem;
    NavigateToDetails(bookHeader.url);
}

我真的很感谢你的帮助,谢谢!

编辑 :Book.xaml GrdivView来源:

<GridView Grid.Row="1"           
          Padding="18"           
          ItemsSource="{Binding Source={StaticResource BookViewSource}}"           
          IsItemClickEnabled="True" 
          ItemClick="{x:Bind ViewModel.BookGroups_OnItemClick}"
          >
    <GridView.ItemTemplate>
        <DataTemplate>
            <Grid Width="250" Height="250" >
                <Border VerticalAlignment="Bottom" Background="#AA000000">
                    <TextBlock Text="{Binding name}" Margin="12" Foreground="White"/>
                </Border>
            </Grid>
        </DataTemplate>
    </GridView.ItemTemplate>

    <GridView.GroupStyle>
        <GroupStyle>
            <GroupStyle.HeaderTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding name}" Margin="-12,0,0,0"/>
                </DataTemplate>
            </GroupStyle.HeaderTemplate>
        </GroupStyle>
    </GridView.GroupStyle>
</GridView>

2 个答案:

答案 0 :(得分:0)

我已将您的代码1:1复制到新项目中,并且NavigateToDetails方法会被调用。请尝试在方法中放置断点以查看它是否被击中。如果是,则NavigationService可能存在问题。否则,问题很可能出现在GridView.ItemTemplate中 - 可能有一个控件处理点击事件,因此它根本不会冒泡到GridView

答案 1 :(得分:0)

最后,当我从Book.xaml中删除以下部分时,t 项目点击工作正常:

<GridView.GroupStyle>
    <GroupStyle>
        <GroupStyle.HeaderTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding name}" Margin="-12,0,0,0"/>
            </DataTemplate>
        </GroupStyle.HeaderTemplate>
    </GroupStyle>
</GridView.GroupStyle>

我没有找到导致问题的原因,但现在可以了。 感谢您的帮助和时间:)