C# 如何在具有数据的页面之间导航
我希望有人能帮助我理解它是如何工作的。。 我有一个Xamarin形式的项目 我有一个第1页和下面的代码 Page1.xamlC# 如何在具有数据的页面之间导航,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我希望有人能帮助我理解它是如何工作的。。 我有一个Xamarin形式的项目 我有一个第1页和下面的代码 Page1.xaml <StackLayout BindableLayout.ItemsSource="{Binding List1}"> <BindableLayout.ItemTemplate> <DataTemplate> <AbsoluteLayout> &
<StackLayout BindableLayout.ItemsSource="{Binding List1}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<AbsoluteLayout>
<Button Text="{Binding NameP} Clicked="Button_Clicked"/>
</AbsoluteLayout>
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>
<?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.Page2">
<StackLayout VerticalOptions="Start" HorizontalOptions="Center">
<Label Text={Binding NameP}" />
<Label Text={Binding Detail}" />
</StackLayout>
</ContentPage>
正如Jason的回答,您可以使用构造函数将数据传递到另一个页面
对于第一个页面,您可以在按钮单击事件中找到当前选择项
private async void Button_Clicked(object sender, EventArgs e)
{
Button btn = (Button)sender;
Programmes1 data = ListPrograms1.Find(s => s.NameP == btn.Text);
await Navigation.PushAsync(new Page26(data));
}
然后修改具有一个参数的第二个页面构造函数
public partial class Page26 : ContentPage
{
public Programmes1 Model { get; set; }
public Page26(Programmes1 model)
{
InitializeComponent();
Model = model;
Console.WriteLine(Model.NameP);
this.BindingContext = this;
}
}
<StackLayout HorizontalOptions="Center" VerticalOptions="Start">
<Label Text="{Binding Model.NameP}" />
<Label Text="{Binding Model.Detail}" />
</StackLayout>
公共部分类第26页:内容页
{
公共程序1模型{get;set;}
公共页面26(程序1模型)
{
初始化组件();
模型=模型;
Console.WriteLine(Model.NameP);
this.BindingContext=this;
}
}
请注意:您需要将ListPrograms1绑定到StackLayout BindableLayout.ItemsSource,而不是List1,因为我找不到List1的位置
您通常使用页面的构造函数将数据传递给页面,就像您使用任何C#类一样。是的,谢谢,我不知道该怎么做。非常感谢。你为我带走了一部分神秘:)
public partial class Page26 : ContentPage
{
public Programmes1 Model { get; set; }
public Page26(Programmes1 model)
{
InitializeComponent();
Model = model;
Console.WriteLine(Model.NameP);
this.BindingContext = this;
}
}
<StackLayout HorizontalOptions="Center" VerticalOptions="Start">
<Label Text="{Binding Model.NameP}" />
<Label Text="{Binding Model.Detail}" />
</StackLayout>