Параметр передачи между представлением списка и другой страницей в Xamarin - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь создать приложение на xamarin и до сих пор, после нескольких часов видео и множества форумов, я всегда нахожу решение, но на этот раз я не могу его отдать.

У меня есть Listview списка моего собственного класса «Cliente» private List<Cliente> clienti;

Я привязал объект к списку для отображения данных, и я поставил ItemTapped

            <ListView ItemsSource="{Binding Clienti}" HasUnevenRows="True" ItemTapped="TapCliente">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Padding="0,0,0,5">
                            <Frame BorderColor="Black">
                                <StackLayout Orientation="Vertical">
                                    <Label Text="{Binding rag_sociale}"/>
                                    <Label Text="{Binding ind_anag }"/>
                                <StackLayout Orientation="Horizontal">
                                    <Label Text="{Binding cap_anag }" HorizontalOptions="Start"/>
                                    <Label Text="{Binding loc_anag }" HorizontalOptions="End"/>
                                    <Label Text="{Binding prov_anag }" HorizontalOptions="End"/>
                                </StackLayout>
                            </StackLayout>
                            </Frame>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

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

        public void TapCliente(object sender, ItemTappedEventArgs e)
    {
        Cliente cliente_selezionato = (Cliente)
            ((ListView)sender).SelectedItem;
        Navigation.PushModalAsync(new SchedaAnagraficaPage(cliente_selezionato.cod_anag));
    }

"cod_anag" значение типа int, но в конструкторе новой страницы я не могу установить параметр для получения. Если я напишу:

public SchedaAnagraficaPage(int codice_cliente) { InitializeComponent(); }

Он напишет «Can't Convert form views.SchedaAnagraficaPage to Xamarin.Forms.Page "

Если я напишу:

        public SchedaAnagraficaPage(Cliente cliente)
    {
        InitializeComponent();
    }

Он напишет" Can't convert from int to models.Cliente "

Any Предложение? Спасибо

1 Ответ

0 голосов
/ 18 июня 2020

Во-первых, вы можете проверить с помощью навигации без параметров, работает ли она:

Navigation.PushModalAsync(new SchedaAnagraficaPage());

Затем можете добавить int аргумент для навигации.

Невозможно преобразовать представления формы .SchedaAnagraficaPage в Xamarin.Forms.Page

Возникает эта ошибка, необходимо проверить SchedaAnagraficaPage , наследуются ли от ContentPage:

public partial class SchedaAnagraficaPage : ContentPage
{

     public SchedaAnagraficaPage(int codice_cliente)
     {
          InitializeComponent();
     }
}

Кроме того, если напишите метод SchedaAnagraficaPage следующим образом:

public SchedaAnagraficaPage(Cliente cliente)
{
    InitializeComponent();
}

Метод TapCliente должен быть следующим:

public void TapCliente(object sender, ItemTappedEventArgs e)
{
    Cliente cliente_selezionato = (Cliente)((ListView)sender).SelectedItem;
    Navigation.PushModalAsync(new SchedaAnagraficaPage(cliente_selezionato));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...