Нажатый жест в Xamarin.forms

Итак, я должен сделать свой макет в первый раз на С#...

Теперь я хочу иметь возможность перейти к элементу списка, а затем перейти на страницу сведений с данными о выбранном элементе. Как я могу это сделать?

В настоящее время у меня есть этот код;

public MainPage()
{
    GeneratePage();
    InitializeComponent();
}

private async Task GeneratePage()
{
    List<Folder> folders = await ApiManager.GetFoldersAsync();

    foreach (var f in folders)
    {
        List<Lists> lists = new List<Lists>();
        foreach (int id in f.list_ids)
        {
            lists.Add(await ApiManager.GetSpecificListAsync(id));
            // Debug.WriteLine("ID for list '"+ f.title +"' : " + id);
        }
        this.Children.Add(new ContentPage
        {
            Title = f.title,
            Content = new ListView
            {
                ItemsSource = lists
            }
        });
    }
}

person Robin    schedule 21.11.2017    source источник
comment
ну, я понятия не имею, как это работает, у меня есть файл .xaml с именем MainPage.xaml, в котором у меня есть TabbedPage теги (там нет содержимого, только простые теги).   -  person Robin    schedule 21.11.2017


Ответы (2)


Обычно я использую XAML вместо CodeBehind для создания пользовательских интерфейсов, но следующий фрагмент должен сработать, но я его не тестировал.

Просто присоединитесь к событию ItemTapped. В качестве альтернативы вы также можете добавить TapGestureRecognizer в свой ListView.

private async Task GeneratePage() 
{
    List<Folder> folders = await ApiManager.GetFoldersAsync();

    foreach (var f in folders) 
    {
        List<Lists> lists = new List<Lists>();

        foreach (int id in f.list_ids) 
        {
            lists.Add(await ApiManager.GetSpecificListAsync(id));
            // Debug.WriteLine("ID for list '"+ f.title +"' : " + id);
        }

        ListView listView = new ListView { ItemsSource = lists };

        listView.ItemTapped += ListViewOnItemTapped;

        this.Children.Add(new ContentPage 
        {
            Title = f.title,
            Content = listView
        });
    }
}

void ListViewOnItemTapped (отправитель объекта, ItemTappedEventArgs itemTappedEventArgs) { throw new NotImplementedException(); }

person Tobias Theel    schedule 21.11.2017

у вас есть список ContentPage?? Это очень странно. Но, как правило, для добавления события касания для элемента ListView вы подписываетесь на событие ItemTapped.

var list = new ListView();
list.ItemsSource = myItems;
list.ItemTapped += myEventTapped();
Content = list;`
person Miguel Angel Muñoz    schedule 21.11.2017