在列表视图和 Xamarin 中的另一个页面之间传递参数

Pass parameter between listview and another page in Xamarin

我正在尝试在 xamarin 中制作一个应用程序,直到现在,经过几个小时的视频和许多论坛,我总能找到解决方案,但这次我无法放弃它。

我有一个我自己的列表的列表视图 class "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"

有什么建议吗? 谢谢

首先,您可以检查不带参数的导航是否有效:

Navigation.PushModalAsync(new SchedaAnagraficaPage());

然后可以添加 int 参数来导航。

Can't Convert form views.SchedaAnagraficaPage to 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));
}