Событие GridView ItemClick не работает? - PullRequest
0 голосов
/ 29 апреля 2018

Я работаю над приложением 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 голосов
/ 29 апреля 2018

Итак, когда я удалил следующую часть из Book.xaml, t щелчок элемента работает нормально:

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

Я не выяснил, в чем причина проблемы, но сейчас работает. Спасибо за вашу помощь и время:)

0 голосов
/ 29 апреля 2018

Я скопировал ваш код 1: 1 в новый проект, и метод NavigateToDetails вызывается. Пожалуйста, попробуйте установить точку останова в методе, чтобы увидеть, получен ли он. Если это так, возможно, проблема с NavigationService. В противном случае проблема весьма вероятна в GridView.ItemTemplate - возможно, существует элемент управления, который обрабатывает событие щелчка, чтобы он вообще не всплывал до GridView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...