【问题标题】:GridView ItemClick event not working?GridView ItemClick 事件不起作用?
【发布时间】:2018-04-30 04:28:06
【问题描述】:

我正在开发一个 UWP 应用程序,试图在 GridView 上实现 ItemClick 事件,但是,当我点击一个项目时,什么也没有发生。

相关代码如下:

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>

【问题讨论】:

    标签: xaml gridview uwp


    【解决方案1】:

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

    【讨论】:

    • 感谢您的帮助。我在 NavigateToDetailes 和 BookGroups_OnItemClick 中都设置了断点,但它们从未被击中。我添加了完整的 GridView 源代码,我也没有看到 ItemTemplate 中的问题所在。
    • 你是对的,在这种情况下应该没关系。你能尝试用最少的代码创建一个简单的项目,看看它是否在那里工作吗?另外,关闭 Visual Studio,进入项目文件夹,删除 objbin 文件夹,然后打开 Visual Studio 并执行 Build -> Clean solution and Build -> Rebuild solution,看看它是否没有帮助。跨度>
    • 不幸的是,重建解决方案没有奏效。我试图将代码放入一个小项目中,这里也是如此-ItemClick 不起作用,断点未命中。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 2017-05-18
      • 2012-10-23
      • 1970-01-01
      相关资源
      最近更新 更多