Как я могу получить доступ к x: name в коде Xamarin? - PullRequest
0 голосов
/ 11 января 2019

Итак, у меня есть настройка MasterDetails, и я хочу добиться следующего: Если я выбираю пункт в меню (MasterView), я вижу его результаты (DetailsView). Этот DetailsView является ListView с ViewCells. Все идет нормально. Теперь я хочу перейти к деталям содержимого DetailsPage. Позвольте мне показать вам код этого:

XAML - AssignmentListPage.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="App.Views.AssignmentListPage"
         Title="Opdrachten">
<ListView x:Name="AssignmentsListView" Margin="20">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout Padding="20,0,0,0" HorizontalOptions="StartAndExpand" Orientation="Horizontal">
                    <Label x:Name="myAssignments" Text="{Binding Title}" VerticalTextAlignment="Center" />
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

И файл с выделенным кодом:

C # - AssignmentListPage.xaml.cs

public partial class AssignmentListPage : ContentPage
    {
        public AssignmentListPage ()
        {
            InitializeComponent ();

            NavigateDetails();
        }

        protected override async void OnAppearing()
        {
            base.OnAppearing();

            AssignmentsListView.ItemsSource = await 
    App.AssignmentManager.GetAssignmentsAsync();

        }

        public void NavigateDetails()
        {
            var tap = new TapGestureRecognizer();

            tap.Tapped += (s, e) => OnLabelClickedAsync();

            myAssignments.GestureRecognizers.Add(tap);


        }

        public async Task OnLabelClickedAsync()
        {
            await Navigation.PushAsync(new AssignmentDetailsPage());
        }

    }

Проблема в том, что myAssignments в коде кода выдает ошибку «Не удается разрешить символ ...».

Я безуспешно пробовал следующее:

В функции NavigateDetails() я заменил myAssignments на:

var asd = this.FindByName<Label>("myAssignments");

asd.GestureRecognizers.Add(tap);

Я также пытался использовать this, например:

this.myAssignments.GestureRecognizers.Add(tap);

Не могли бы вы, ребята, сказать мне, что я делаю не так? Я не могу получить доступ к ярлыку.

1 Ответ

0 голосов
/ 11 января 2019

добавить распознаватель жестов в XAML

<Label x:Name="myAssignments" Text="{Binding Title}" VerticalTextAlignment="Center" >
  <Label.GestureRecognizers>
    <TapGestureRecognizer Tapped="OnLabelClickedAsync" />
  </Label.GestureRecognizers>
</Label>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...