在列表视图和 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));
}
我正在尝试在 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));
}