Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在具有数据的页面之间导航_C#_Xamarin_Xamarin.forms - Fatal编程技术网

C# 如何在具有数据的页面之间导航

C# 如何在具有数据的页面之间导航,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我希望有人能帮助我理解它是如何工作的。。 我有一个Xamarin形式的项目 我有一个第1页和下面的代码 Page1.xaml <StackLayout BindableLayout.ItemsSource="{Binding List1}"> <BindableLayout.ItemTemplate> <DataTemplate> <AbsoluteLayout> &

我希望有人能帮助我理解它是如何工作的。。 我有一个Xamarin形式的项目

我有一个第1页和下面的代码

Page1.xaml

<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>